輕鬆搞懂ssh免密碼 & rsync免密碼 & 自動備份mysql並只保留30天內資料


輕鬆搞懂ssh免密碼
host1host2為例,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.的寫法在同步時才會刪掉舊檔,有*會無法刪除同步中的舊資料

自動備份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/ (不用寫出全部路徑)



留言

熱門文章