我需要将大型服务器备份到FTP存储中。我可以tar所有文件,我可以使用FTP上传,我可以将tar文件拆分成许多小文件。
但问题是我不能一步完成这三个步骤。我可以直接tar到FTP,我可以使用split进行tar,但不能使用FTP进行tar分割。
操作系统是CentOS 6.2 文件大小超过800G
由于
答案 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,那么你怎么能分开。