我有一个 Cassandra 节点,其中快照分为 64 个目录,每个目录有超过 350 个文件。我想“查找”所有快照文件,保留它们的位置,将它们同步到具有大量文件空间的主机,然后在登陆时将它们 tar/gz 。这可以一步完成吗?
目前我必须:
find /mnt* -type d -name snapshots -exec /usr/bin/rsync {} -avhr user@host:/mntc/backups/ ';'
然后:
tar -czpf /mntd/backups/mybackup.tgz /mntc/backups/snapshots
如果能在 rsync 过程中将找到的文件直接“倒入”另一端的存档中,那就太好了。这可能吗?
笔记:
- Cassandra 节点没有所需的 1Tb 可用空间来在查找搜索中预压缩文件
- 将文件 Rsync 到新主机,然后打包结果需要主机上有 2Tb,减少了我一次可以执行的 Cassandra 节点数量(总共 20 个需要备份)
答案1
长话短说,这是我发现实现这一目标的最佳方法,以防其他人感兴趣:
find /mnt* -type d -name snapshots > dir.list; \
tar -czpf - -T dir.list | ssh user@host "openssl aes256 \
-out /mntc/backups/snapshot.tgz.enc -salt -k 'secret'"