如果我失去对文件的访问权限,rsync 会覆盖当前文件吗?

如果我失去对文件的访问权限,rsync 会覆盖当前文件吗?

如果我失去对某些数据目录的访问权限,rsync 会覆盖我当前拥有的文件吗?

rsync -amHAXxzvR --update --numeric-ids --progress  --include='*/' --include=*.sas7bdat --exclude='*.old/' --exclude=* -e [email protected]:/XXX/ /mnt/z/XXX/.

我对数据的权限可能每年左右都会发生变化,具体取决于机构对数据库的访问权限。例如,对于某些文件,如果我无权访问,我会收到以下错误:无法打开“XXXX”:权限被拒绝 (13)

那么,如果我运行上述命令,rsync 是否会覆盖并销毁我已经下载但失去访问权限的当前文件?

如果是这样,我该如何避免呢?谢谢。

答案1

您尚未指定--delete,因此不会从目标中删除任何文件。您可以自己轻松测试权限。

设想

mkdir -p 739797/src 739797/dst
cd 739797

echo first try | tee src/file1 >src/file2         # Create two files
rsync -av src/ dst/                               # Copy everything

使用ls -l你可以看到dst/现在包含相同的内容src/

echo second attempt | tee src/file1 >src/file2    # Update the two files
chmod u= src/file2                                # Remove permission from file2
rsync -av src/ dst/                               # Attempt to copy everything

您会看到rsync失败,权限被拒绝file2。使用ls -l dst可以看到file1已经更新但file2还没有。此外,还file没有(正确地)更新:

-rw-r--r-- 1 roaima roaima 15 Mar 15 13:09 file1
-rw-r--r-- 1 roaima roaima 10 Mar 15 13:04 file2

额外说明

  1. 如果您正在备份数据库或任何其他文件,请rsync记住它在复制时不会锁定其源文件,并且复制不是即时的。如果源文件在rsync复制时发生更改,则最终可能会在目标文件中出现未检测到的损坏。备份快照或闲置副本
  2. 始终引用 和 的通配符模式--include--exclude以便 shell 不会尝试将它们与文件系统中的文件和目录进行匹配。而不是--exclude=*--exclude='*'

相关内容