如何使用 rsync 同步 XML 文件并将其作为 .gz 存储在目标位置

如何使用 rsync 同步 XML 文件并将其作为 .gz 存储在目标位置

我正在使用 rsync -z 备份大量 XML 文件。源是一台大型机器,磁盘上有数千 GB 可用空间,但目标并不那么强大。

我想要做的是在传输过程中压缩 XML 文件,并在目的地保持压缩状态。选项 -z 仅在传输过程中进行压缩。

是否可以仅使用一个 crontab 命令来完成此操作?

这是我目前正在使用的命令:

*/30 * * * * rsync -rz -e 'sshpass -p "MY_PASSWORD" ssh -p 5022' --ignore-existing --quiet --delete REMOTE_USER@REMOTE_HOST:/path/to/remote/ /path/to/local/

答案1

我设法用一种变通方法解决了这个问题。在本地主机上,我只需压缩同步文件并用字符串“0”覆盖原始文件。它可以防止 rsync 再次同步同一个文件,并显著减少磁盘负载。

exec('find /path/to/local/ -name "*.xml" -size +10k',$output);
foreach ($output as $key => $filepath) {`
        
        //gzip the xml file
        $gz = gzopen("/path/to/gz/".basename($filepath).".gz", "wb9");
        gzwrite($gz, file_get_contents($filepath));
        gzclose($gz);
        
        //overwrite xml file
        $xml = fopen($filepath,"w");
        fwrite($xml, "0");
        fclose($xml);
}

相关内容