无法使用 rsync 将数据恢复到我的电脑

无法使用 rsync 将数据恢复到我的电脑

我的 Linux Mint 20.2 计算机设置了以下各项中的数据:

/home/user/Desktop
/home/user/Documents
/home/user/Pictures
/home/user/Videos
/home/user/Downloads
/home/user/GitHub

我使用以下方式备份此数据:rsync -ac --info=progress2 --delete --keep-dirlinks /home/user/{Downloads,Desktop,Documents,GitHub,Pictures,Videos} /media/user/<DRIVE-NAME><DRIVE-NAME> might be东芝-EXT orCRUCIALX6-2`;我有几个外部驱动器,所以这是基本语法。这很好用;全新的和更改/更改/更新的本地文件会备份到外部驱动器,因此外部驱动器始终具有最新的,并且我在本地删除的任何内容都会从外部驱动器中删除。这是我想要的行为。

我最近尝试使用:rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT /home/user尝试将我的数据(不包括/GitHub)从外部驱动器恢复TOSHIBA-EXT到本地存储。我很失望地发现/home/user/Documents它不是最新的。

结果,它创建了/home/user/TOSHIBA-EXT,其中包含目录DownloadsDesktopDocumentsPictures、 和Videos。所以我打开了 rsync 手册页。

这些不起作用:

rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/{Downloads, Desktop, Documents, Pictures, Videos} /home/user/{Downloads, Desktop, Documents, Pictures, Videos}- 似乎挂了。

rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/{Downloads, Desktop, Documents, Pictures, Videos} /home/user/- 似乎挂了。

rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/ /home/user/{Downloads, Desktop, Documents, Pictures, Videos}- 似乎挂了。

rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/ /home/user/- 失败并出现如下错误:cannot delete non-empty directory: .local/shore/Trash/files/Videos}/TOSHIBA-EXT。其他错误类似。

rsync -acr --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/ /home/user/- 返回的错误与上面类似。

rsync -acr --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/ /home/user/- 创建/home/user/TOSHIBA-EXT

我追求的行为是:

复制这些目录的内容 恢复到:
/media/user/TOSHIBA-EXT/Desktop /home/user/Desktop
/media/user/TOSHIBA-EXT/Documents /home/user/Documents
/media/user/TOSHIBA-EXT/Pictures /home/user/Pictures
/media/user/TOSHIBA-EXT/Videos /home/user/Videos
/media/user/TOSHIBA-EXT/Downloads /home/user/Downloads

我一直在阅读 rsync 手册页和 duckduckgo 结果,但我认为我需要一些帮助。

我需要如何更改恢复命令才能完成上述恢复行为?

答案1

对于恢复,您在源路径上缺少尾部斜杠。文档 ( man rsync) 确实说了这一点,但页面很长,很容易错过:

您可以将源上的尾随/视为“复制此目录的内容”而不是“按名称复制目录”,但在这两种情况下,包含目录的属性都会传输到目标上的包含目录。

您还应该删除-c( --checksum) 标志。它在这里没有增加任何价值,并且会显着降低备份速度。

因此,您的备份应如下所示,在目标中创建目录DownloadsDesktop、等:Documents

rsync -avi --delete /home/user/{Downloads,Desktop,Documents,GitHub,Pictures,Videos} /media/user/<DRIVE-NAME>

相应的完整恢复如下所示,其中我添加了u( --update) 以避免更新目标上较新的文件,并删除了--delete以避免删除未备份的目录和文件:

rsync -auvi /media/user/<DRIVE-NAME>/ /home/user/

答案2

有人发布了这个。我想你最后只是多了一个 / 。

尾部斜杠很重要当在源末尾使用“/”时,rsync 将复制最后一个文件夹的内容。当源末尾不使用“/”时,rsync 将复制最后一个文件夹及其内容。注意:源目录上的尾部斜杠 (/) 会修改 rsync 命令的行为。

但我仍然经常需要运行我的脚本并检查它是否有效。我的数据位于安装在 /mnt/data 的分区中,并且包含我的所有文件夹,如文档、音乐等。闪存驱动器通常自动安装在 /media/fred/data256 中,因为其分区标记为 data256。

这是我的恢复:

rsync -aruvP /media/fred/data256/Documents /mnt/data

这是我复制到 256GB 闪存驱动器的副本:

rsync -aruvlP --delete /mnt/data /media/fred/data256

我不会使用 128GB 闪存驱动器复制所有文件夹

rsync -aruvP --delete /media/fred/data128/Documents /mnt/data
rsync -aruvP --delete /mnt/data/Documents /media/fred/data128

相关内容