Ole*_*leg 5 backup compression gzip rsync
我想创建一些目录的压缩镜像,以便可以从原始目标和远程目标再次同步。
我可以通过两步低效地完成:
rsync -a /source/ /compressed-mirror/
gzip --recursive --rsyncable --force /compressed-mirror/
# later: rsync -a /compressed-mirror/ remote:/another-compressed-mirror/
Run Code Online (Sandbox Code Playgroud)
问题是,如果我重新运行第一个 rsync 来更新镜像,它需要重新复制和 gzip 所有源文件,即使只有其中几个发生了更改。
问题:是否有其他方法可以最大限度地减少每次更新所需的数据传输量和硬盘使用量?
笔记:
我并没有坚持使用 gzip 进行压缩 - 我选择它只是因为它允许重新同步压缩文件。
本地压缩镜像的目的是最大限度地减少与远程镜像进行 rsync 所需的“网络运行”时间,因为源计算机(笔记本电脑)的互联网连接和电源状态都不可靠。本地镜像的某些部分在 rsync 到远程镜像之前会被加密。然后,远程镜像会使用 rsnapshot 进行版本控制,并通过更稳定的互联网连接上传到另一台远程服务器。
更新/想法:
gzip < source/path/file > mirror/path/file.gz
。这似乎是迄今为止最有效的解决方案。处理您的要求的最有效方法可能不是压缩中间镜像目标。这将允许rsync
在本地和远程主机之间使用其增量算法来仅传输更改的数据。(不过,当在同一主机上的两个目录之间进行复制时,增量算法不适用。)
# Any changed files will be copied completely, even if only one byte changed
rsync -a --delete /source/ /mirror/
# Only copy changed parts of changed files
rsync -az --delete /mirror/ remote:/mirror/
Run Code Online (Sandbox Code Playgroud)
最有效的解决方案(就本地硬盘和中间网络的命中而言)是完全放弃本地镜像,而直接从源复制到远程目标:
# Only copy changed parts of changed files
rsync -az --delete /source/ remote:/mirror/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19660 次 |
最近记录: |