我的服务器磁盘空间不足。我想将一些 TB 大小的目录移动到长期存档中。这是一个磁带机器人,首选文件大小为 16GB。因此我想将 tar 存档分割成 16GB 的部分。
tar -czpv mydir | split -d - a 4 -b $SplitBlockSize - mydir.gz.tar
可通过 访问 LT 存档服务器sftp
。是否可以将 的输出转发split
到sftp
而不将其存储在本地?
答案1
当然,你可以使用sshfs
.假设您已经sftp
正确配置了要发送这些文件的方向,则可以使用以下命令将本地目录映射到远程服务器。
$ mkdir remote
$ sshfs user@server:/path/to/dir remote
然后您可以调整命令将分割文件写入映射目录。
$ tar -czpv mydir | split -d -a 4 -b $SplitBlockSize - remote/mydir.gz.tar
就您而言,我认为更好的解决方案是使用 的--filter
选项split
。从man
页面split
-
--filter=COMMAND
write to shell COMMAND; file name is $FILE
这样做
$ tar -czpv mydir | split -d -a 4 -b $SplitBlockSize --filter 'ssh user@remote "cat >$FILE"' - mydir.gz.tar
会将文件直接写入ssh
您的远程服务器。如果您还没有设置公钥身份验证,我建议您设置公钥身份验证,否则您必须为传输的每个文件输入密码。在您的情况下,每 TB 为 64 次。如果您预计此传输需要很长时间,请考虑使用此方法nohup
来减少必须重新开始的机会。