我需要将大型服务器备份到 FTP 存储中。我可以压缩所有文件,我可以使用 FTP 上传,我可以将 tar 文件拆分成许多小文件。
但问题是我不能一步完成这三个步骤。我可以直接 tar 到 FTP,我可以用 split 来 tar,但不能用 FTP 和 split 来 tar。
操作系统为CentOS 6.2 文件大小大于800G
谢谢
最佳答案
要使用一个命令行对目录进行 tar、拆分和 ftp,您需要以下内容:
split 命令只写入标准输出,所以你不能将文件传递给另一个命令如 ftp 来处理它,为此你需要修补 split 以可以使用 --filter 选项来传递输出通过为输出文件设置 $FILE 环境变量(文件名为 x00、x01、x02 ...),将文件“即时”传输到 ftp,而无需保存到硬盘。
1) 这是拆分补丁:http://lists.gnu.org/archive/html/coreutils/2011-01/txt3j8asgk8WH.txt 修补 split 命令后,您会在 man 中看到 --filter 选项在您的 split 命令中可用。
2) 安装 ncftp ftp 客户端,这是一个很好的 ftp 客户端,它允许您连接到 ftp 并将文件放在一行命令中,而无需像普通 ftp 客户端那样等待 ftp 响应。 ncftp 可用于与脚本等集成。
这里是使用 tar 将/home 目录压缩为 100MB 小文件并通过 FTP 传输每个文件的命令
tar cvz -i /home | split -d -b 100m --filter 'ncftpput -r 10 -F -c -u ftpUsername -p ftpPassword ftpHost $FILE'
请注意,我们也使用了 ncftpput,它将 $FILE 传递给单个命令中的 ftp。 其他 ftp 选项: -r 10:允许您在与 ftp 失去连接后尝试重新连接 10 次。 -F:使用被动模式。 -c:从标准输入获取输入。
要合并拆分文件(x00、x01、x02、x03 ...)以提取文件,请使用以下命令
cat x* > originalFile.tar
关于linux - tar 非常大的文件到 FTP 直接拆分成较小的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18981805/