輕鬆搞懂ssh免密碼 & rsync免密碼 & 自動備份mysql並只保留30天內資料
輕鬆搞懂ssh免密碼
以host1與host2為例,host2登入host1免密碼的方式
在host1本機操作 (若要host1登入host2免密碼則反之)
先在host1產生 id_dsa.pub
$ ssh-keygen -t dsa
(一直按enter就好)
將id_dsa.pub從host1傳送到host2
$ cd .ssh/
$ scp id_dsa.pub host2_id@host2:~/id_dsa_host1.pub
登入host2,並將id_dsa_host1.pub匯入至.ssh/authorized_keys
$ ssh host2_id@host2
$ cat id_dsa_host1.pub >> .ssh/authorized_keys
完成這樣的步驟就能夠免密碼登入了
rsync免密碼
rsync的寫法參考,在host2同步host1 /var/www/ 資料至 host2 /home/host2/backup_host1/
sudo rsync -av --delete -e "ssh -i /home/host2/.ssh/id_dsa" host1_id@host1:/var/www/ /home/host2/backup_host1/
※需注意,避免用*,如底下兩種寫法
01./var/www/* /home/host2/backup_host1/www
02./var/www/ /home/host2/backup_host1/
02.的寫法在同步時才會刪掉舊檔,有*會無法刪除同步中的舊資料
※需注意,避免用*,如底下兩種寫法
01./var/www/* /home/host2/backup_host1/www
02./var/www/ /home/host2/backup_host1/
02.的寫法在同步時才會刪掉舊檔,有*會無法刪除同步中的舊資料
自動備份mysql並只保留30天內資料
$ cat backup_mysql.sh
day=`date +%Y-%m-%d`
basedir="/home/host2/mysqlbackup"
cd
/home/host2/mysqlbackup/
mysqldump --lock-all-tables -u root food > food-"$day".sql
# 如果要備份www資料可再加寫這一段
# 備份food資料夾,但不包含food的photo資料夾
cd /var/www/
tar -zcpf "$basedir"/www."$day".tar.gz food --exclude=photo 2> /dev/null
# 刪除在 /home/host2/mysqlbackup/ 資料夾中,超過30天的資料
find
/home/host2/mysqlbackup -type f -atime +30 -print -exec rm -f '{}' \;
※最後還有一個很關鍵的檔案
/root/.my.cnf
[client]
password=mysql密碼
--exclude-from '/home/backup/exclude.txt'
or
--exclude-from=/home/backup/exclude.txt
exclude.txt
路徑的寫法,真接寫備份時再跑的目錄即可,例如 xxxx/ (不用寫出全部路徑)
※最後還有一個很關鍵的檔案
/root/.my.cnf
[client]
password=mysql密碼
排除特定的目錄
or
--exclude-from=/home/backup/exclude.txt
exclude.txt
路徑的寫法,真接寫備份時再跑的目錄即可,例如 xxxx/ (不用寫出全部路徑)
留言