我想用 rsync 备份文件。
我注意到第一次复制了 Excel 文件,但是在编辑文件后,备份文件夹中的文件已损坏。
无论您是在本地运行 rsync 还是使用 SSH 运行都没有关系。
如何重现:
- 创建文件夹 c:\rsync-source
- 在此文件夹中创建一个新的 excel 文件
- 打开 Ubuntu WSL
- 跑步
rsync --delete --delete-excluded --partial --inplace --progress --checksum --append -avre ssh /mnt/c/rsync-source /mnt/c/rsync-target
- 打开目标 Excel 文件 ->它打开了
- 在源 Excel 文件中进行一些重大更改(当只进行微小更改时,校验和有时似乎相同)
- 再次运行 rsync 命令
- 再次打开目标中的 Excel 文件 ->“我们发现 filename.xlsx 的某些内容存在问题。您是否希望我们尽可能地恢复?”
恢复过程在简单的 Excel 表上有效,但在我的真实 Excel 文件中无法恢复。
所以我猜问题不是出在 Excel 上。问题似乎出在 rsync copy 命令上。
操作系统:Windows 10 上的 WSL Ubuntu
Excel:2019
答案1
您的命令行过于复杂。请尝试以下方法:
rsync --delete --progress -av /mnt/c/rsync-source /mnt/c/rsync-target
笔记
- 使用
--partial
可能会留下不完整的目标文件。通过网络,如果您重新运行命令rsync
并让其完成复制,这可能是一个优势,但对于本地源和本地目标之间的传输,只会删除不完整的目标文件并重试完整复制。 --checksum
除非您的文件更新且修改时间没有相应更新,否则不需要使用。-e ssh
当您在本地复制时,无需给出网络传输命令( ),因为此类复制会忽略该命令。-r
当您使用存档模式 ( ) 时,递归标志 ( ) 是隐含的-a
。- 请仔细考虑您是否确实需要
--delete-excluded
。在几乎所有情况下,这都是一个危险且不合适的标志,最好直接使用--delete
。 - 虽然您在问题中没有使用它,但该
--inplace
标志对于本地到本地的复制也基本无关紧要。当通过网络传输非常大的文件并且目标上没有足够的空间来保留原始文件的副本同时构建其替换时,最适合使用它。此标志以空间换取效率。
答案2
此问题是由--inplace
和引起的--partial
。这似乎破坏了 excel 文件。
因为我也想传输大文件的部分内容,所以我将添加--partial-dir=.rsync-partial。
完整的工作命令如下:
rsync --delete --delete-excluded --partial-dir=.rsync-partial --progress --checksum -avre ssh /mnt/c/rsync-source /mnt/c/rsync-targe``