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 中的某些情况下可能需要它:
答案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