我需要将大型服务器备份到 FTP 存储中。我可以 tar 所有文件,可以使用 FTP 上传,还可以将 tar 文件拆分为许多小文件。
但问题是我不能一步完成这三个步骤。我可以直接 tar 到 FTP,我可以使用 split 进行 tar,但不能使用 FTP 和 split 进行 tar。
操作系统为 CentOS 6.2 文件大小超过 800G
谢谢
我需要将大型服务器备份到 FTP 存储中。我可以 tar 所有文件,可以使用 FTP 上传,还可以将 tar 文件拆分为许多小文件。
但问题是我不能一步完成这三个步骤。我可以直接 tar 到 FTP,我可以使用 split 进行 tar,但不能使用 FTP 和 split 进行 tar。
操作系统为 CentOS 6.2 文件大小超过 800G
谢谢
要使用一个命令行 tar、拆分和 ftp 目录,您需要以下内容:
split 命令仅写入标准输出,因此您不能将文件传递给另一个命令(如 ftp)来处理它,为此您需要修补 split 以使用 --filter 选项可以将输出文件传递给 ftp通过使用输出文件设置 $FILE 环境变量(文件名将是 x00、x01、x02 ...),“即时”无需保存到硬盘。
1)这里是拆分补丁:http : //lists.gnu.org/archive/html/coreutils/2011-01/txt3j8asgk8WH.txt 修补拆分命令后,您会在 man 中看到 --filter 选项可用您的拆分命令。
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
您可以制作一个shell脚本并使用
tar zcf - /usr/folder | split -b 30720m - /usr/archive.tgz
然后上传到 FTP 也是因为一旦你做了tar
并放入 FTP 那么你怎么能分裂。