• 使用scp在服务器之间实现自动备份


    背景:

    (1)工作时的代码都在放在服务器上

    (2)服务器不稳定,随时可能当机

    所以决定写个shell脚本,自动(每天凌晨)将client服务器上指定的文件夹打包,然后复制到另外一台服务器server上的指定目录下。

    话不多说,上代码:

     1 #/bin/sh
     2 
     3 #usage
     4 #(1)modify line 10 to line 14 of this script, provide necesary information
     5 #(2)./backup.11 install
     6 #(3)just enjoy it!
     7 
     8 #information you must provide
     9 #local directory that should be backup and uploaded
    10 local_files=("/home/raozhengfeng/work/DEV-ICG-z.rao/ADV_PRJ/SCRC_SL/ICG_Prj/DEV/z.rao/MIS" "/home/raozhengfeng/work/NB-projects")
    11 remote_host=109.119.20.11
    12 remote_user=raozhengfeng
    13 #directory on remote server to store bakcup files, which MUST be existed
    14 remote_directory=/home/raozhengfeng/233/
    15 
    16 install()
    17 {
    18         add_cron
    19         prepare_ssh
    20 }
    21 
    22 #generate ssh-key and upload to remote host, so we can use 'scp' util without password
    23 prepare_ssh()
    24 {
    25         if [ -e "~/.ssh/id_rsa.pub" ]; then
    26                 echo "XXXXXXXXXXXXXXXXXXX"
    27         else
    28                 ssh-keygen -b 1024 -t rsa -N "" -f ~/.ssh/id_rsa
    29         fi
    30 
    31         scp ~/.ssh/id_rsa.pub $remote_user@$remote_host:/home/$remote_user/.ssh/authorized_keys
    32 }
    33 
    34 #add this script to cron
    35 add_cron()
    36 {
    37         echo "1 10 * * * "`pwd`"/$0" > $0.cron
    38         crontab $0.cron
    39 }
    40 
    41 #tar and upload local files to remote host
    42 backup()
    43 {
    44         for _f in ${local_files[@]}
    45         do
    46                 echo $_f
    47                 #if necessary, we can name the archived file with date
    48                 tar czf $_f.tar.gz $_f
    49                 scp $_f.tar.gz $remote_user@$remote_host:$remote_directory
    50         done
    51 }
    52 
    53 if [ $# -gt 0 ]; then
    54         if [ $1 = "install" ]; then
    55                 echo "Installing..."
    56                 install
    57                 exit
    58         fi
    59 fi
    60 
    61 backup

    使用方法见代码注释。

  • 相关阅读:
    unity-TextAsset
    unity-热更-InjectFix
    进程和线程的区别
    StringBuffer 和 StringBuilder 的区别
    List、Set、Map 三者区别
    竞态条件是什么?
    多线程安全(synchronized、三大特性、生命周期以及优缺点)
    集合的同步与非同步
    List、Set、Map的了解及区别
    java面试题
  • 原文地址:https://www.cnblogs.com/chutianyao/p/2750021.html
Copyright © 2020-2023  润新知