你能告诉我为什么 rsync 说我的文件不同吗

你能告诉我为什么 rsync 说我的文件不同吗

我正在使用 rsync 将文件从 NAS 同步到远程服务器。远程服务器上的文件似乎具有与源相同的用户、组和权限。然而 rsync 无论如何都想复制文件。

以下是从我的 NAS 到远程服务器的输出:

root@omv:/share/Music# rsync -auHs --dry-run --progress --itemize-changes --numeric-ids -e ssh /share/Music/Bond/Born user@somedomain:/home/user/media/Music/Bond/Born
sending incremental file list
cd+++++++++ Born/
<f+++++++++ Born/01 Bond - Quixote.flac
<f+++++++++ Born/02 Bond - Winter.flac
<f+++++++++ Born/03 Bond - Victory.flac
<f+++++++++ Born/04 Bond - Oceanic.flac
<f+++++++++ Born/05 Bond - Kismet.flac
<f+++++++++ Born/06 Bond - Korobushka.flac
<f+++++++++ Born/07 Bond - Alexander The Great.flac
<f+++++++++ Born/08 Bond - Duel.flac
<f+++++++++ Born/09 Bond - Bella Donna.flac
<f+++++++++ Born/10 Bond - The 1812.flac
<f+++++++++ Born/11 Bond - Dalalai.flac
<f+++++++++ Born/12 Bond - Hymn.flac
<f+++++++++ Born/13 Bond - Victory (Mike Batt Mix).flac
<f+++++++++ Born/Folder.jpg
root@omv:/share/Music#

这是 NAS 上的校验和:

root@omv:/share/Music# sha256sum 'Bond/Born/'*
d510925c0cba8b01b4d95935248ef5b863e4ed9a7e8c7e537b3acbd18767c882  Bond/Born/01 Bond - Quixote.flac
5dd40480fdc1ca7d20bfa3696c99a8b918636be2af7e59101d4cd9b04726dd44  Bond/Born/02 Bond - Winter.flac
b0c1236caf10c1a4c04ee4cce16d9b2d47e6a5fecfcc8fabd513c585a4156039  Bond/Born/03 Bond - Victory.flac
4348e1502c36b0824742e4c47544efee2b3040626fdd94f937634b55c6736c1f  Bond/Born/04 Bond - Oceanic.flac
8e8bbf0817d1625a183547b31e60d9677bb454d18bb6c2b14ed7729a8acb4627  Bond/Born/05 Bond - Kismet.flac
19b0ea2b2f2ad45bb3cee3876037b238fa9a5915eccf44c766262de17085ff33  Bond/Born/06 Bond - Korobushka.flac
37fa58c31263aeb475ace4760b86d26fbf130a47bf80e51c61b4b2e0e003fa07  Bond/Born/07 Bond - Alexander The Great.flac
6ad69fe39d57b7be43538c36a674ed89492d805087319a386bb8ddda78ae364e  Bond/Born/08 Bond - Duel.flac
ae3de5d17b1ad56ce1d6ef7323532c015f863ab1548c198cdac41386e56c46d3  Bond/Born/09 Bond - Bella Donna.flac
ab85604b04ad72cc01a886d61b437354ee2eb058fe5d1188199c360445d4c926  Bond/Born/10 Bond - The 1812.flac
6babc0a824b42375efa5d584dd1662687022f9830d16c70504b2e1b86c17e71a  Bond/Born/11 Bond - Dalalai.flac
11f2ad493c5c0d8beee89a00e9502010421579cffc941fe3d1e72cdd70a5f12b  Bond/Born/12 Bond - Hymn.flac
b15ad119dfd14a76d5fd47ce5993a6ebccec10171f1e58f5238bf830f05a3134  Bond/Born/13 Bond - Victory (Mike Batt Mix).flac
537e3ab0f6cf762319e36b19a786951d507d66dc26ea6409f4000cac508a58ab  Bond/Born/Folder.jpg

这是远程服务器上的校验和:

user@10:~/media/Music$ sha256sum 'Bond/Born/'*
d510925c0cba8b01b4d95935248ef5b863e4ed9a7e8c7e537b3acbd18767c882  Bond/Born/01 Bond - Quixote.flac
5dd40480fdc1ca7d20bfa3696c99a8b918636be2af7e59101d4cd9b04726dd44  Bond/Born/02 Bond - Winter.flac
b0c1236caf10c1a4c04ee4cce16d9b2d47e6a5fecfcc8fabd513c585a4156039  Bond/Born/03 Bond - Victory.flac
4348e1502c36b0824742e4c47544efee2b3040626fdd94f937634b55c6736c1f  Bond/Born/04 Bond - Oceanic.flac
8e8bbf0817d1625a183547b31e60d9677bb454d18bb6c2b14ed7729a8acb4627  Bond/Born/05 Bond - Kismet.flac
19b0ea2b2f2ad45bb3cee3876037b238fa9a5915eccf44c766262de17085ff33  Bond/Born/06 Bond - Korobushka.flac
37fa58c31263aeb475ace4760b86d26fbf130a47bf80e51c61b4b2e0e003fa07  Bond/Born/07 Bond - Alexander The Great.flac
6ad69fe39d57b7be43538c36a674ed89492d805087319a386bb8ddda78ae364e  Bond/Born/08 Bond - Duel.flac
ae3de5d17b1ad56ce1d6ef7323532c015f863ab1548c198cdac41386e56c46d3  Bond/Born/09 Bond - Bella Donna.flac
ab85604b04ad72cc01a886d61b437354ee2eb058fe5d1188199c360445d4c926  Bond/Born/10 Bond - The 1812.flac
6babc0a824b42375efa5d584dd1662687022f9830d16c70504b2e1b86c17e71a  Bond/Born/11 Bond - Dalalai.flac
11f2ad493c5c0d8beee89a00e9502010421579cffc941fe3d1e72cdd70a5f12b  Bond/Born/12 Bond - Hymn.flac
b15ad119dfd14a76d5fd47ce5993a6ebccec10171f1e58f5238bf830f05a3134  Bond/Born/13 Bond - Victory (Mike Batt Mix).flac
537e3ab0f6cf762319e36b19a786951d507d66dc26ea6409f4000cac508a58ab  Bond/Born/Folder.jpg
user@10:~/media/Music$

所有校验和看起来都正常,那么为什么 rsync 仍然想将文件复制到远程服务器呢?

TIA

答案1

空运行增量输出中的s<表示文件将被发送,并且+s 表示文件将被重新创建。这表明目标上不存在这些文件。

您的目标规格是user@somedomain:/home/media/Music/Bond/Born但你向我们展示了:

user@10:~/media/Music$ sha256sum 'Bond/Born/'*

其中~代表您的主目录。您可以使用 进行仔细检查echo ~,您的主目录不太可能是/home。更有可能的是类似的东西/home/user,所以目标规范应该是类似的东西user@somedomain:/home/user/media/Music/Bond/Born,或者只是user@somedomain:media/Music/Bond/Born我们在远程服务器上使用相对路径作为sshd将你带到你的主目录中,所以这将是远程服务器上你的主目录的相对路径。

另外,由于源规范 ( /share/Music/Bond/Born) 不以 结尾/,因此要求在目标目录中rsync创建一个Born目录,因此它将尝试创建一个/home/media/Music/Bond/Born/Born.

请注意联机帮助页中的这一重要段落rsync

源上的尾部斜杠会更改此行为,以避免在目标上创建额外的目录级别。您可以将 / 源尾随视为“复制此目录的内容”而不是“按名称复制目录”[...]

所以命令应该是这样的:

rsync -auHs --dry-run --progress --itemize-changes --numeric-ids -e ssh \
      /share/Music/Bond/Born/ \
      user@somedomain:/home/user/media/Music/Bond/Born

相关内容