【问题标题】:Delete old backup folders over lftp / ftp通过 lftp / ftp 删除旧的备份文件夹
【发布时间】:2011-10-25 01:30:35
【问题描述】:

我正在为我的 Ubuntu 服务器编写一个小型备份脚本。文件被tar'ed并在本地压缩到一个临时文件夹,通过lftp上传到ftp服务器,最后在本地删除。

将文件保存到服务器:

FTPSUBDIR=`date --utc +"%Y-%m-%d"`
echo "mkdir -p /daily/${FTPSUBDIR}; mirror --reverse ${TEMPDIR} /daily/${FTPSUBDIR};" | /usr/bin/lftp -u "$FTPUSER,$FTPPASS" "$FTPSERV"

ftp服务器上的文件夹结构:

/
  daily
    2011-10-25
    2011-10-24
    2011-10-23
  weekly
    2011-10-23
    2011-10-16
    2011-10-09

如何只保留 x 个最新的备份(每天 5 个,每周 4 个)并删除 ftp 服务器上的其他文件夹?

【问题讨论】:

    标签: bash ftp backup


    【解决方案1】:

    仅在远程系统上进行 ftp 操作,您需要在 ftp 客户端更加主动。

    接下来是非调试代码片段...您将不得不充实和调试。

    # 将目录列表的结果打印到标准输出
    ftp_dir ()
    {
      排版 dir="$1";
      ftp 
    
    

    如果我再清醒一点,我可能会想出更好的答案。

    【讨论】:

      【解决方案2】:

      这是我发现删除旧备份的最简单方法:

      HOST='ftpback.net'
      USER='username'
      PASSWD='pass'
      FILE="file.tar.gz"
      DELPREFIX=$( date -d 'now -2 month' +'%y-%m' )
      
      ftp -n $HOST <<END_SCRIPT
      quote USER $USER
      quote PASS $PASSWD
      cd mysql
      put $FILE
      mdel "$DELPREFIX*"
      y
      quit
      END_SCRIPT
      exit 0
      

      这里的DELPREFIX等于前一个月,所以如果是11月,日期就是9月,例如'15-09'。

      在 FTP 中,它将删除所有以 DELPREFIX 开头的文件,例如'15-09'。这并不能让您当天删除文件,但如果您乐于保留可变数量的备份,那么它比其他脚本解决方案更容易。

      您可能需要稍微调整一下文件名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-17
        • 1970-01-01
        • 2015-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-19
        相关资源
        最近更新 更多