当前位置:  开发笔记 > 编程语言 > 正文

仅在安装文件系统时才进行RSync

如何解决《仅在安装文件系统时才进行RSync》经验,为你挑选了2个好方法。

我想设置一个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找到.



1> bob esponja..:

mountpoint 似乎是最好的解决方案:如果路径是挂载点,则返回0:

#!/bin/bash
if [[ `mountpoint -q /path` ]]; then
    echo "filesystem mounted"
else
    echo "filesystem not mounted"
fi

在LinuxQuestions找到.



2> Ted Percival..:
if cut -d' ' -f2 /proc/mounts | grep '^/mnt/remote1$' >/dev/null; then
    rsync -avz ...
fi

从中获取已挂载分区的列表/proc/mounts,仅匹配/mnt/remote1(如果已挂载,则将grep的输出发送到/dev/null),然后运行您的rsync作业.

最近的greps有一个-q选项,您可以使用而不是发送输出/dev/null.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有