Appendix III. How to Backup
- Setup
- add a setting file: ~/.gitconfig
- Clone/Download an existed repository on github
git clone [email protected]:lulab/RNAfinder_Server.git
git clone https://github.com/xug15/test.git
- Create a new repository
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/xug15/test.git
git push -u origin master
- Sync local files with github repo
Pull (update):
git pull origin master
git log -n 2 # look at the last two log entries.
Add:
git add exmaples/
git commit -m ‘20190705v1’
git push origin
Change:
git commit -m ‘20190705v1’
git push origin
Remove:
git rm *.file
git commit -m ‘20190705v1’
git push origin
Tips: the bash script to sync a github repo:time=`date`echo $timegit add -u .git add *git commit -m '$time'git push origin master
- (a) Generate SSH key
ssh-keygen -t rsa -b 2048
- (b) Copy your keys to the target server
ssh-copy-id user@server_ip #if port add: -p 2200
上述操作后,通过ssh到remote server时就可以无需输入密码了,因此下面的步骤也可以在无人值守的时候自动运行。但如果下面的步骤中你无需登录remote server, 就无需setup ssh key。
- (a) First you need to prepare some backup dirs
mkdir /home/john/backup_local # prepare a backup dir for some local files
mkdir /home/john/backup_remote # prepare a backup dir for some remote files
- (b) Then, write a back up script, for example : ~/backup.sh
#!/bin/bash
#0. Define the parameters of rsync
RSYNC="rsync --stats --compress --recursive --times --perms --links --delete --max-size=100M --exclude-from=/home/john/excluded_file_list.txt"
#A. Local backup
echo "1. Backup of /home/john/data start at:"
date
$RSYNC /home/john/data/ /home/john/backup_local/
echo "Backup end at:"
date
#B. Remote backup
echo "2. Backup 166.178.56.20:/home/lulab/john/data/ start at:"
date
$RSYNC joh[email protected]:/home/lulab/john/data/ /home/john/backup_remote/
echo "Backup end at:"
date
- (c) Last, make your backup.sh excutable
chmod +x ~/backup.sh
Parameters of rsync (useman rsync
to see more details):
Parameter | Mean |
-a: | 以递归方式传输文件 |
--delete: | 删除那些接收端还有而发送端已经不存在的文件 |
-q: | 精简输出模式 |
-z: | 在传输文件时进行压缩处理 |
-H: | 保持硬链接文件 |
-t: | 对比两边文件的时间戳和文件大小.如果一致,则就认为两边文件一样,对此文件就不再采取更新动作了 |
-I: | 挨个文件去发起数据同步 |
--port=PORT: | 端口号 |
- 打开crontab编辑器:
crontab -e
- 加入以下行:
# minute hour day_in_month month day_in_week command
15 3 * * * /home/john/backup.sh > /home/john/backup.log
Linux将通过crontab定时运行上述命令, 具体定义如下:
Column | Mean |
Column 1: | Minutes 0 to 59 |
Column 2: | Hours 0 to 23 (0 means midnight) |
Column 3: | Day 1 to 31 |
Column 4: | Months 1~12 |
Column 5: | Week 0 to 7 (0 and 7 for Sunday) |
Column 6: | Command to run |
- Linux 推荐章节:
- 第25章 LINUX备份策略: 25.2.2完整备份的差异备份; 25.3鸟哥的备份策略; 25.4灾难恢复的考虑; 25.5重点回顾