【问题标题】:Rsync backup unable to create directories on backup serverRsync 备份无法在备份服务器上创建目录
【发布时间】:2015-11-03 00:41:54
【问题描述】:

我的脚本旨在收集文件并使用 ssh 通过网络备份它们(因为它是唯一不受防火墙阻止的东西),然后删除任何超过 30 天的备份。但是,当代码运行时,我会收到以下错误消息:

接收增量文件列表rsync:mkdir “/var/home/username_local/BackupTo/username/2015-08-10”失败:没有这样的 文件或目录 (2) rsync 错误:文件 IO(代码 11)中的错误 main.c(576) [receiver=3.0.6]

我使用的代码如下:

#!/bin/bash

#User who's files are being backed up
BNAME=username
#directory to back up
BDIR=/home/username/BackThisUp
#directory to backup to
BackupDir=/var/home/username_local/BackupTo
#user
RUSER=$USER
#SSH Key
KEY=/var/home/username_local/.ssh
#Backupname
RBackup=`date +%F`
#Backup Server
BServ=backup.server
#Path
LPATH='Data for backup'
#date
DATE=`date +%F`

#Transfer new backups
rsync -avpHrz  -e "ssh -i $KEY" $BNAME@$BServ:$BDIR $BackupDir/$BNAME/$DATE


find $BackupDir/$BNAME -type d -ctime +30 -exec rm -rf {} \;

编辑:当我添加时问题已解决:

mkdir $BackupDir/$BNAME > /dev/null 2>&1

rsync 之前

【问题讨论】:

    标签: linux bash ssh backup rsync


    【解决方案1】:

    我认为 rsync 不会写入不存在的目标目录。 你可以在你的 rsync 前面加上一个

    ssh $BNAME@$BServ "mkdir $BackupDir/$BNAME/$DATE"
    

    但前提是 mkdir 的变量已知是安全的。这可能是代码注入,例如您的 $BackupDir 是从脚本外部提供的。

    【讨论】:

      【解决方案2】:

      另一个技巧是在实际的 rsync(在远程服务器上启动)前面加上... mkdir:

      rsync -avpHrz --rsync-path "mkdir -m 700 $BackupDir/$BNAME/$DATE && rsync" -e "ssh -i $KEY" $BNAME@$BServ:$BDIR $BackupDir/$BNAME/$DATE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-07
        • 2022-11-02
        • 2021-04-05
        相关资源
        最近更新 更多