当前位置 主页 > 服务器问题 > Linux/apache问题 >

    shell脚本实现本地文件与服务器文件同步

    栏目:Linux/apache问题 时间:2019-12-02 15:30

    为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行shell脚本,输入项目名就能发布到服器上。

    1、shell文件代码

    #!/bin/sh
    read -t 30 -p "请输入项目名:" name
    echo -e "\n"
    echo "项目名为:$name"
    case $name in
       cn)
       rsync -r ~/project1 root@192.168.18.2:/project1 --exclude="test.css" --progress
       ;;
       cnb2b)
       rsync -r ~/project2 root@192.168.18.2:/web/project2 --exclude="node_modules" --progress
       ;;
       *)
       echo "Ignorant"
       ;;
     esac
     echo "同步完成"

    2、关键字解释:

        name表示要同步的文件名

        --exculde="node_modules"表示过滤的文件夹

        --progress 显示文件同步进程

     3、文件新建并保存

      将文件保存为name.sh

      使用. name.sh执行文件

     4、具体进程;

    PS:shell脚本备份本地服务器的文件到远程服务器

    遍历本地文件夹下的所有文件名,分别压缩后ftp传送到远程服务器上保存

    1 - 新建 backup.sh,写入脚本

    #!/bin/bash  
    local_ip=$(ifconfig | grep "inet addr" | grep -v 127.0.0.1 | awk '{print $2}' | awk -F ':' '{print $2}') 
    backup_dir="/var/web_backup/data" 
    date=`date +%Y%m%d` 
    deldate=`date -d -14day +%Y%m%d` 
    mkdir -p $backup_dir 
    web_path="/mysite" 
    web_dir=$(ls -l /mysite/ |awk '/^d/ {print $NF}') 
    for web_name in $web_dir 
    do 
        if [ "$web_name" != "lost+found" ] 
        then 
        tar zcvf $backup_dir/$web_name.dump_$date.tar.gz $web_path/$web_name 
        fi 
    done 
    ftp -n<<! 
    open 10.XX.XX.XX 
    user ftpuser ****** 
    binary 
    hash 
    cd backups/web/$local_ip/ 
    lcd /var/web_backup/data 
    prompt 
    mput *.tar.gz 
    close 
    bye 
    ! 
    rm -rf $backup_dir/* 

    2 - 修改属性为可执行

    chmod 755 backup.sh 

    3 - crond定时任务,每天晚上00:00:00执行一次

    0 0 * * * /var/backup.sh > /dev/null 2>&1 

    总结

    以上所述是小编给大家介绍的shell脚本实现本地文件与服务器文件同步,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对IIS7站长之家网站的支持!