繁体   English   中英

Rsync备份无法在备份服务器上创建目录

[英]Rsync backup unable to create directories on backup server

我的脚本旨在收集文件并使用ssh在网络上备份它们(因为这是唯一不受防火墙阻止的内容),然后删除30天以上的所有备份。 但是,运行代码时,我收到此错误消息:

接收增量文件列表rsync:mkdir“ / var / home / username_local / BackupTo / username / 2015-08-10”失败:没有这样的文件或目录(2)rsync错误:main.c中的文件IO(代码11)错误(576)[接收者= 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之前

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

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

但是只有在已知mkdir的变量安全的情况下。 如果您的$ BackupDir是从脚本外部提供的,则可以是代码注入。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM