简体   繁体   English

Linux Shell 脚本 - 挂载和备份文件

[英]Linux Shell Script - Mounting and Backing Up Files

I'm writing my first shell script.我正在编写我的第一个 shell 脚本。 I want to check if a filesystem is mounted.我想检查是否安装了文件系统。 If so, then backup the documents from my main drive to the backup that is mounted.如果是这样,那么将文件从我的主驱动器备份到安装的备份。 If not, mount the filesystem, then backup the documents.如果没有,则挂载文件系统,然后备份文件。

#!/bin/bash
# Check if linux_backup filesystem is mounted
# Mount filesystem if not mounted already, and then backup documents

docs= "/home/user1/Documents"
mount= "/run/media/user1"
docsbackup= "/run/media/user1/linux_backup/home/user1/Documents"
filesystem= "/dev/sdc3"

sync_files() {
    SOURCE=$1
    TARGET=$2
    sudo rsync --progress -r --update -aAXv $SOURCE $TARGET
}

if mount | awk '{if ($3 == "/run/media/user1") { exit 0}} ENDFILE{exit -1}';
then
    echo "linux_backup is mounted"
    sync_files $docs $docksbackup
else
    echo "linux_backup is not mounted. Will mount now"
    mount $filesystem $mount
    sync_files $docs $docksbackup
fi

I executed the script, yet all I got was a lot of text.我执行了脚本,但我得到的只是大量文本。 It didn't perform as I wanted.它没有按我想要的那样执行。 Did I not use the right options or arguments for one of the functions?我是否没有为其中一个函数使用正确的选项或参数?

I suggest such a script for you:我为你推荐这样一个脚本:

docs="/home/user1/Documents"
mount="/run/media/user1"
backup="/run/media/user1/linux_backup/home/user1/Documents"
device="/dev/sdc3"

sync_files() {
    SOURCE=$1
    TARGET=$2
    sudo rsync --progress -r --update -aAXv $SOURCE $TARGET
}

# Check if FS is mounted
if grep -qs "/run/media/user1" /proc/mounts; then
    # Device is mounted
    sync_files $docs $docksbackup
else
    # Device isn't mounted, mounting...
    mount $mount $device
    # Back upping
    sync_files $docs $docksbackup
fi

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

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