我有一个 500 GB 的文件,打算远程备份。该文件经常更改。我将把它从桌面同步到服务器。两者都可以运行 rsync 客户端或服务器。
什么是正确的命令?到目前为止,我尝试过的那些一直在服用,或者只是表现得很奇怪。
示例和结果:
rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1
Run Code Online (Sandbox Code Playgroud)
似乎有效,但前提是我做两次(?!)。还有,慢。
上面的命令是在两台计算机上进行校验和,还是只在发送端进行校验?否则正确吗?
Den*_*asi 13
它永远不会很快,因为 rsync 将不得不读取/校验整个文件,而读取 500GB 将需要很长时间,除非您将它存储在 SSD 或其他东西上。
试试rsync -vhz --partial --inplace <file/server stuff>
。
-c
意味着它在进行任何传输之前对整个文件进行校验,而不是使用时间戳来查看它是否已更改,这意味着读取整个文件两次。如果时间戳没有更改(应该更改),那么您可以touch
在运行 rsync 之前只更改文件。
如果这不是脚本化的,您可以添加,--progress
以便您可以看到它在运行时的表现。
虽然它不是 rsync,但根据您尝试执行的操作,这可能会更好。我正在做一个类似的备份任务,它肯定更快。
使用 netcat 制作从一台机器到另一台机器的 tar 管道。
在您的源计算机上:
tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454
您正在创建一个 tarball 保留权限和时间,然后将其通过管道传输到端口 45454 上的 netcat
在您的备份机器上
nc -w 10 X.X.X.X 45454 | tar -xpv
X.X.X.X
= 源机器的本地 IP 地址。
对我来说,这很有效。它在有线 LAN 上的运行速度为 25-30 MB/s,而 rsync 为 2-3 MB/s。缺点是:它不同步,它只是复制您的源上的内容。对于您所描述的备份 - 一个 500GB 的文件 - 它可以很好地工作。
您可能必须以 root 身份执行此操作以避免权限问题,否则您可能会很幸运。
FWIW,我最初在这里了解到这一点:http : //www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/