我想设置一个cron作业来将远程系统rsync到备份分区,例如:
bash -c 'rsync -avz --delete --exclude=proc --exclude=sys root@remote1:/ /mnt/remote1/'
我希望能够"设置它并忘记它"但是如果没有/mnt/remote1
安装会怎么样?(重启后或其他什么)我想错误,如果/mnt/remote1
没有挂载,而不是填补本地文件系统.
编辑:
这是我为脚本提出的,清理改进升值(特别是对于空的然后...其他,我不能留空或bash错误)
#!/bin/bash DATA=data ERROR="0" if cut -d' ' -f2 /proc/mounts | grep -q "^/mnt/$1\$"; then ERROR=0 else if mount /dev/vg/$1 /mnt/$1; then ERROR=0 else ERROR=$? echo "Can't backup $1, /mnt/$1 could not be mounted: $ERROR" fi fi if [ "$ERROR" = "0" ]; then if cut -d' ' -f2 /proc/mounts | grep -q "^/mnt/$1/$DATA\$"; then ERROR=0 else if mount /dev/vg/$1$DATA /mnt/$1/data; then ERROR=0 else ERROR=$? echo "Can't backup $1, /mnt/$1/data could not be mounted." fi fi fi if [ "$ERROR" = "0" ]; then rsync -aqz --delete --numeric-ids --exclude=proc --exclude=sys \ root@$1.domain:/ /mnt/$1/ RETVAL=$? echo "Backup of $1 completed, return value of rsync: $RETVAL" fi
bob esponja.. 6
mountpoint
似乎是最好的解决方案:如果路径是挂载点,则返回0:
#!/bin/bash if [[ `mountpoint -q /path` ]]; then echo "filesystem mounted" else echo "filesystem not mounted" fi
在LinuxQuestions找到.
mountpoint
似乎是最好的解决方案:如果路径是挂载点,则返回0:
#!/bin/bash if [[ `mountpoint -q /path` ]]; then echo "filesystem mounted" else echo "filesystem not mounted" fi
在LinuxQuestions找到.
if cut -d' ' -f2 /proc/mounts | grep '^/mnt/remote1$' >/dev/null; then rsync -avz ... fi
从中获取已挂载分区的列表/proc/mounts
,仅匹配/mnt/remote1
(如果已挂载,则将grep的输出发送到/dev/null
),然后运行您的rsync
作业.
最近的grep
s有一个-q
选项,您可以使用而不是发送输出/dev/null
.