我使用 rsync 在两台计算机之间移动数据更改。我将数据目录从 PC2 备份到 USB 棒,然后将 USB 棒插入 PC1 并运行 rsync 以根据 USB 棒中存储的数据目录更新 PC1 上的数据目录。我使用非常可爱的小型闪存 16Gb,我非常喜欢。数据变得超过 16Gb。
我总是使用这个 rsync 命令:
from=/home/y/data;to=/media/y/16g_flash/_backup_data/; rsync -av --delete $from $to
它删除了我在电脑上删除的 USB 闪存中的文件。并且它根据上次修改时间添加了新文件或更新了文件。
现在数据变得比我的 U 盘上的空间还要重。我喜欢我的 16Gb USB 棒,希望用我的双手和您的建议来解决我的问题,例如不使用另一根 256Gb 内存条。
我看到的解决方案是仅复制更新的文件并使用带有文件列表(权限和上次修改时间)的文本文件,并使用它来比较哪些文件被删除、更新、添加。步骤如下:
- 我将数据目录:/home/y/data 复制到我的 PC:PC1 和 PC2。所以我从不同电脑上的相同文件列表开始。
- 我将文件列表存储到 U 盘中的 /media/y/16g_flash/pc1_data.txt 和 /media/y/16g_flash/pc2_data.txt。这些文件从一开始就是相同的。
- 我在 PC2 上工作:删除一些文件、更新、创建新文件。因此,我的 PC2 上的数据目录成为事实,但我的 PC1 上的数据目录变得不真实,需要更新。
- 我在 PC2 上运行 rsync 来复制新文件并将更新的文件复制到 U 盘。我还将 PC2 的新文件列表保存到 /media/y/16g_flash/pc2_data.txt 。此文件列表是实际的,因为它的修改晚于文件 /media/y/16g_flash/pc1_data.txt 。所以在这里,我的 USB 记忆棒只包含我更改过的一些文件,还包含我的 PC2 上数据目录的文件列表的“快照”。
- 我来到 PC1 并运行 rsync 以将新文件和已从 USB 棒更新的文件复制到 PC1。此外,我还删除了 /media/y/16g_flash/pc2_data.txt 中不存在的文件,因为这意味着我已从 PC2 中删除了它们。最后,我在 PC1 上同步了数据目录。
这使我无需将所有文件存储到 USB。我只存储“最后一笔交易”:
- 新的和更新的文件
- 和当前的文件列表。
这可能仅使用我的 USB 记忆棒上的 100Mb 空间,而不是我的数据目录正在使用的 20Gb。
可以用rsync吗?
我不确定如何进行 rsync 将我的数据目录与文件 /media/y/16g_flash/pc1_data.txt 中的文件列表进行比较?另外,如果列表 /media/y/16g_flash/pc2_data.txt 中不存在这些文件,我不确定如何删除我的 PC1 上的旧文件 - rsync 是否会这样做,或者我需要输入 bash 脚本?