Fra*_*cke 8 encryption backup automation rsync
我在不同的卷上有两个 300 GB 的文件:
按照设计,这两个文件的大小相同,而且内容也大多(> 90%)相同......
有没有一种有效的工具来“rsync”这些文件,并且只复制不同的部分,所以目标文件与源文件相同?
也许构建块校验和来解决这个问题的东西,我不知道......(任何比cp -f
......更有效的东西...... rsync 也会获取整个源文件来覆盖)
ank*_*540 12
rsync
可用于执行此操作。
--no-whole-file
或--no-W
参数使用块级同步而不是文件级同步。
测试用例
使用/dev/random
来自网站的大块文本文件生成随机文本文件,如下所示。这 4 个文件的所有内容都不同。tf_2.dat
是我们的目标文件。
~/logs/rs$ ls -tlh
-rw-rw-r-- 1 vayu vayu 2.1G ? 25 23:11 tf_2.dat
-rw-rw-r-- 1 vayu vayu 978M ? 25 23:11 a.txt
-rw-rw-r-- 1 vayu vayu 556K ? 25 23:10 file2.txt
-rw-rw-r-- 1 vayu vayu 561K ? 25 23:09 nt.txt
Run Code Online (Sandbox Code Playgroud)
然后使用rsync
(目标为空)将它们复制到不同的硬盘。
rsync -r --stats rs/ /mnt/raid0/scratch/t2
Run Code Online (Sandbox Code Playgroud)
收到以下统计信息。
Number of files: 5 (reg: 4, dir: 1)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 4
Total file size: 3,260,939,140 bytes
Total transferred file size: 3,260,939,140 bytes
Literal data: 3,260,939,140 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 3,261,735,553
Total bytes received: 92
sent 3,261,735,553 bytes received 92 bytes 501,805,483.85 bytes/sec
total size is 3,260,939,140 speedup is 1.00
Run Code Online (Sandbox Code Playgroud)
现在我合并这些文件以制作一个包含大约 60% 旧数据的新文件。
cat file2.txt a.txt >> tf_2.dat
Run Code Online (Sandbox Code Playgroud)
现在,我同步这两个文件夹,这次使用--no-W
选项。
rsync -r --no-W --stats rs/ /mnt/raid0/scratch/t2
Number of files: 5 (reg: 4, dir: 1)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 4
Total file size: 4,289,593,685 bytes
Total transferred file size: 4,289,593,685 bytes
Literal data: 1,025,553,047 bytes
Matched data: 3,264,040,638 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 1,026,127,265
Total bytes received: 611,604
sent 1,026,127,265 bytes received 611,604 bytes 21,169,873.59 bytes/sec
total size is 4,289,593,685 speedup is 4.18
Run Code Online (Sandbox Code Playgroud)
您可以看到大数据匹配并加速。
接下来,我再试一次,这次我将几个 shell 文件合并到目标 ( tf_2.dat
) 中,更改为 ~2%,
cat *.sh >> rs/tf_2.dat
Run Code Online (Sandbox Code Playgroud)
并且,再次使用rsync
.
rsync -r --no-whole-file --stats rs/ /mnt/raid0/scratch/t2
Number of files: 5 (reg: 4, dir: 1)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 4
Total file size: 4,289,727,173 bytes
Total transferred file size: 4,289,727,173 bytes
Literal data: 178,839 bytes
Matched data: 4,289,548,334 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 541,845
Total bytes received: 690,392
sent 541,845 bytes received 690,392 bytes 43,236.39 bytes/sec
total size is 4,289,727,173 speedup is 3,481.25
Run Code Online (Sandbox Code Playgroud)
我们看到大型匹配和加速提供快速同步。
归档时间: |
|
查看次数: |
2216 次 |
最近记录: |