tar非常大的文件到FTP直接拆分成较小的文件

时间:2013-09-24 12:36:19

标签: linux ftp backup tar large-data

我需要将大型服务器备份到FTP存储中。我可以tar所有文件,我可以使用FTP上传,我可以将tar文件拆分成许多小文件。

但问题是我不能一步完成这三个步骤。我可以直接tar到FTP,我可以使用split进行tar,但不能使用FTP进行tar分割。

操作系统是CentOS 6.2 文件大小超过800G

由于

2 个答案:

答案 0 :(得分:2)

要使用一个命令行来tar,拆分和ftp目录,您需要以下内容:

split命令只写入标准输出,所以你不能将文件传递到另一个命令,比如ftp来处理它,这样做你需要修补分割到可以使用--filter选项来传递输出通过使用输出文件设置$ FILE环境变量(文件名为x00,x01,x02 ......),无需保存到硬盘即可“运行”到ftp“。”

1)以下是拆分补丁:http://lists.gnu.org/archive/html/coreutils/2011-01/txt3j8asgk8WH.txt 修补split命令后,你会在man中看到split命令中有--filter选项。

2)安装ncftp ftp客户端,这是一个很好的ftp客户端,允许你连接到ftp并将文件放在一行命令中,而不必像普通的ftp客户端那样等待ftp响应。 ncftp对于与脚本等集成非常有用。

这里是压缩/ home目录的命令,用tar将其拆分为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:从stdin获取输入。

要合并分割文件(x00,x01,x02,x03 ...),可以使用以下命令提取文件

cat x* > originalFile.tar

答案 1 :(得分:1)

您可以创建一个shell脚本并使用

tar zcf - /usr/folder | split -b 30720m - /usr/archive.tgz

然后上传到FTP也是因为一旦你正在进行tar并进入FTP,那么你怎么能分开。