不允许 Rsync 操作

不允许 Rsync 操作

rsync -avz我已经备份了之前在最新的 Linux Mint 安装中使用的数据。现在,当我尝试在 Windows 10 Ubuntu 子系统上使用相同的命令备份数据时,rsync 只是忽略我的目标文件并尝试将所有文​​件从源复制到目标。我还在多个文件上收到 2 条不同的错误消息:

rsync: chgrp "/mnt/p/file" failed: Operation not permitted (1)

rsync: mkstemp "/mnt/p/file" failed: Operation not permitted (1)

我并不真正关心权限,我只想将数据备份到外部硬盘驱动器。

我尝试用谷歌搜索解决方案,但这些都没有帮助:

sudo chown -R user:user /mnt/p# 没有效果

rsync -rlptgoD --chmod=ugo=rwX# 抛出相同的错误并且根本不复制任何文件

rsync -avz --no-o --no-g --no-perms# 抛出错误“无法设置时间”

编辑:

我尝试了另一个提供的选项:rsync -rtDvz,它会抛出rsync: failed to set times on "/mnt/p/file": Operation not permitted (1)到每个文件上。传输也需要很长的时间,因为它尝试修改所有文件,即使它不能。

我还注意到一件新的事情,当我运行命令sudo chown -R user /mnt/p并使用 检查文件权限时ls -l p,它显示所有文件权限都是root root。由于某种原因,我无法更改外部硬盘驱动器文件的文件权限。

哦,是的,我应该告诉你,我正在尝试将数据备份到外部 USB 记忆棒,即 Fat32 文件系统...抱歉!当我提问时,我并不总是意识到什么是重要的,什么是不重要的。

答案1

手册rsync页说这-a与 相同-rlptgoD。我建议在 rsync 命令(即 )中进行此替换rsync -rlptgoDvz,然后删除在 NTFS 下损坏的各个选项。我希望您至少需要删除-p(权限)、-g(组)、-o(所有者),也许还需要删除-l(符号链接)。删除所有这些会给你留下:

rsync -rtDvz

答案2

在 WSL Ubuntu (Windows 10) 中使用 rsync 与网络附加卷同步时,我一直在寻找此问题的解决方案,我认为该解决方案也适用于您的 USB 记忆棒。对我有用的是在安装驱动器时设置用户和组。例如:

sudo mount -t drvfs -o rw,noatime,uid=1000,gid=1000 'P:\' /mnt/p

使用该--update/-u参数是一个巧妙的技巧,可以通过跳过目的地上日期/时间较新的文件来使其工作,但如果您想更准确地匹配文件上的日期/时间(就像我所做的那样),那么它是一个不太理想的解决方案。当然,您系统上的 uid 和 gid 值可能有所不同,因此请检查/proc/mounts其他挂载可能已经在使用哪些值:

cat /proc/mounts

解决日期/时间的权限后,您可以删除命令--update并将其缩短为:

rsync -rt --progress --modify-window=1 "$SOURCE" "$DEST"

我认为它--modify-window=1可能仍然有用,因为在我所做的其他研究中似乎在 Windows 中的某些情况下可能需要它:

https://pserver.samba.org/rsync/daylight- savings.html

答案3

使用这个命令解决了这个问题:

rsync --progress --modify-window=1 --update --recursive --times

它仍然会抛出“无法设置时间”错误,但至少同步现在可以正常工作。我从这里找到了答案:https://serverfault.com/a/144475

答案4

当我尝试将文件从台式计算机传输到运行 SSH 守护进程的 Android 手机时,我遇到了同样的问题(简单SSHD?版本 27) 该问题是由某些名称中包含该字符的文件引起的。我删除了角色,一切正常。

下面您可以看到我运行的两个命令,以确认?(问号)导致了问题。

在下面显示的命令中,我尝试传输名为foo.txt.命令执行成功(见0最后一行退出代码)

$ rsync -a --progress -vv ~/Downloads/foo.txt myphone:/sdcard/Download
opening connection using: ssh myphone rsync --server -vvlogDtpre.iLsfxCIvu . /sdcard/Download  (7 args)
sending incremental file list
delta-transmission enabled
foo.txt
              2 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
total: matches=0  hash_hits=0  false_alarms=0 data=2

sent 115 bytes  received 66 bytes  120.67 bytes/sec
total size is 2  speedup is 0.01
$ echo $?
0

在下面显示的命令中,我尝试传输名为foo?.txt.该命令会导致错误(请参阅23最后一行中的退出代码)

$ rsync -a --progress -vv ~/Downloads/foo?.txt myphone:/sdcard/Download
opening connection using: ssh myphone rsync --server -vvlogDtpre.iLsfxCIvu . /sdcard/Download  (7 args)
sending incremental file list
delta-transmission enabled
foo?.txt
              2 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
rsync: mkstemp "/sdcard/Download/.foo?.txt.Vn5pbV" failed: Operation not permitted (1)
total: matches=0  hash_hits=0  false_alarms=0 data=2

sent 116 bytes  received 157 bytes  182.00 bytes/sec
total size is 2  speedup is 0.01
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1326) [sender=v3.2.4]
$ echo $?
23

相关内容