![Rsync 替代品](https://linux22.com/image/1156950/Rsync%20%E6%9B%BF%E4%BB%A3%E5%93%81.png)
在花了时间尝试rsync
工作之后,我决定使用其他东西。我在 /home 有一个文件树,我想每天使用相同的树结构将其备份到 64G USB 记忆棒一次,但只复制目标中不存在的文件(并保留时间戳)。
问题:
即使源文件夹只有一个新文件(和 400 个旧文件),我的 rsync 总会找到理由将其中一半复制到目标。
我尝试了类似这样的方法
find /home/me/a/r/z/ -type f -mmin 400 | xargs -0 -I{} cp '{}' /media/usb-id/$( cut -d / -f 4- {} )
我知道有很多错误。我在 cut 中使用了“4”,因为这是树在目标 ( /media/usb-id/r/z/whatever
) 中的起始位置。我认为我应该sed
在所有这些中使用某种方法。有什么想法吗?
明显的错误:
cut: {}: No such file or directory
答案1
sudo rsync -Havn
ext4
文件系统之间
如果你想保留文件的权限和所有权,这是最好的方法。这可能非常重要,因为 Linux 系统依赖它。但对于个人数据文件来说,这并不重要。
我建议先进行一次“试运行”
sudo rsync -Havn source/ target
如果看起来不错,删除该选项n
并执行,
sudo rsync -Hav source/ target
它保留了“所有内容”,因此您可以将整个 Linux 操作系统从一个ext4
文件系统复制到另一个ext4
文件系统。而且您也可以通过这种方式只复制有限的目录树。
如果您必须能够从 Windows 读取它,则ext4
目标驱动器上的替代方法是。请参阅udf
此链接.udf
文件系统可以管理linux文件系统的所有权和权限(以及时间戳)。
但是也有一个缺点udf
,没有众所周知的工具可以修复它。
答案2
你可能会看看这个:https://github.com/Fitus/Zaloha.sh。它是一个基于 find 的 shell 脚本,也基于与您相同的想法(但正如您所预料的那样,它比您的单行脚本稍微复杂一些)...