使用硬链接的FTP备份脚本

时间:2015-02-22 15:45:03

标签: bash ftp backup

通常我会使用rsync based backup 但现在我必须从Windows服务器到Linux制作备份脚本。 所以,没有rsync - 只有FTP。

我喜欢使用硬链接来节省磁盘空间和增量备份以减少流量。

是否有类似的ftp而不是rsync的备份脚本?

更新:
我需要通过FTP备份Windows服务器。备份脚本在Linux备份服务器上执行。

SOLUTION:

我发现this useful script通过FTP备份硬链接和增量功能。

Ubuntu用户注意:Ubuntu中没有md5命令。请改用md5sum

#       filehash1="$(md5 -q "$curfile"".gz")"
#       filehash2="$(md5 -q "$mysqltmpfile")"
        filehash1="$(md5sum "$curfile"".gz" | awk '{ print $1 }')"
        filehash2="$(md5sum "$mysqltmpfile" | awk '{ print $1 }')"

1 个答案:

答案 0 :(得分:2)

编辑,因为原始问题的设置不够清晰。

根据问题的更新情况,您需要通过ftp从Windows系统中提取备份服务器上的数据。在这种情况下,您可以调整自己找到的脚本(请参阅注释)或使用类似的想法:

  • 使用cp -lr通过硬链接克隆以前的备份。
  • 使用lftp --mirror用在远程系统上更新的任何内容覆盖此副本。

但我最初假设您需要将数据从Windows系统推送到备份服务器,即FTP服务器位于备份系统上。这种情况不能这样处理(原始答案如下):

由于FTP根本不知道链接,因此任何传输都只会导致新的或覆盖的文件。唯一的方法是使用SITE命令发出特定于站点的命令,并用硬链接处理这种方式。但是,特定于站点的命令通常受到严格限制,因此您可以执行更改权限等操作,但不能对硬链接执行任何操作。

即使您可以支持SITE的硬链接,您也必须实现决定何时使用此类链接的逻辑。使用rsync,此逻辑内置于rsync服务器中并在服务器站点上执行。使用FTP,您必须在客户端站点上构建所有逻辑,这意味着您必须下载文件以将其与本地文件进行比较,然后决定是否需要上载新文件或者是否需要上传新文件。可以使用现有文件。