๐พ Linux rsync ๅไปฝๅๆญฅๅฏฆๆฐ:่ชๅๅ้ ็ซฏ่ๆฌๆฉๅไปฝ
ๅจไผๆฅญ่ๅไบบไผบๆๅจ็ฐๅขไธญ,่ณๆๅไปฝ ๆฏ็ขบไฟ็้ไธไธญๆท็้้ต。rsync ๆฏ Linux ไธๆ้ๆดป、็ฉฉๅฎไธ้ซๆ็ๆชๆกๅๆญฅๅทฅๅ
ทไนไธ,ๅฏ็จๆผ ๆฌๆฉๅไปฝ、้ ็ซฏๅๆญฅ、ๅข้่ค่ฃฝ ่ ่ชๅๅๆ็จ。ๆฌๆๅฐๅฎๆด็คบ็ฏๅพๅบ็ค่ชๆณๅฐ่ชๅๅๆ็จ็ๅฏฆๆฐๆ็จ。
๐ ไธ、rsync ็ๆ ธๅฟๆฆๅฟต
- ๅทฎ็ฐๅๆญฅ(Delta Transfer):ๅ ๅณ่ผธ่ฎๆด้จๅ,็ฏ็้ ปๅฏฌ。
- ๆฏๆด SSH:ๅฎๅ จๅณ่ผธ่ณๆ,็ก้ ้กๅค้ๆพ FTP。
- ๅฏๆ็จๅ:ๆญ้
cronๆsystemd timer่ชๅๅท่ก。
# ๅฎ่ฃ rsync
sudo apt install rsync -y # Debian / Ubuntu
sudo yum install rsync -y # CentOS / RHEL
# ๅบๆฌ่ชๆณ
rsync -avh /source/ /backup/
# ้ ็ซฏๅๆญฅ(้้ SSH)
rsync -avz -e "ssh -p 22" /home/user/ user@192.168.1.10:/backup/
๐ฆ ไบ、ๆฌๆฉๅไปฝ็ฏไพ:ๆฏๆฅ่ชๅๅๆญฅ
ๅ่จญไฝ ่ฆๆฏๅคฉๅไปฝ /var/www/ ็ถฒ็ซ่ณๆ่ณ /mnt/backup/,ๅฏ็ทจๅฏซๅฆไธ่
ณๆฌ:
# /usr/local/bin/backup_web.sh
#!/bin/bash
rsync -avh --delete /var/www/ /mnt/backup/www/
echo "$(date '+%F %T') - Backup completed." >> /var/log/rsync-backup.log
่จญๅฎ็บๆฏๅคฉๅๆจๅท่ก:
# ไฝฟ็จ cron
sudo crontab -e
0 2 * * * /usr/local/bin/backup_web.sh
# ๆไฝฟ็จ systemd timer(ๆด็ฉฉๅฎ)
sudo systemctl edit --force --full backup.service
sudo systemctl edit --force --full backup.timer
๐ ไธ、้ ็ซฏๅๆญฅ:่ทจไผบๆๅจๅข้ๅไปฝ
rsync ๅฏ็ตๅ SSH ้้ฐๅ ๅฏ็ปๅ ฅ,ๅฎๅ จๅๆญฅๅฐ้ ็ซฏๆฉๆฟๆ้ฒ็ซฏๅๆดไธปๆฉ。
# ๅปบ็ซ้้ฐ่ๅ็ผ
ssh-keygen -t rsa
ssh-copy-id user@backup-server
# ๅๆญฅๅฝไปค
rsync -avz --progress /data/ user@backup-server:/data_backup/
๐งญ ่กๅๆธ ๅฎ
✅ ๅปบ็ซ rsync ๅไปฝ่ ณๆฌไธฆๆธฌ่ฉฆๅๆญฅ ✅ ่จญๅฎ cron ๆ systemd timer ่ชๅๅๆ็จ ✅ ไฝฟ็จ SSH ้้ฐๆๅๅฎๅ จๆง ✅ ้ฉ่ญ log ่จ้่ๅๆญฅ็ตๆ
๐ก️ ๅ、ๆไฝณๅ่ๅธธ่ฆ้ฏ่ชค
- --delete:ๅช้ค็ฎๆจ็ซฏไธๅญๅจ็ๆชๆก(็ถญๆไธ่ดๆง)。
- --exclude:ๆ้คๆซๅญๆๅฟซๅ็ฎ้(ๅฆ
--exclude "cache/")。 - Permission denied → ๆชขๆฅ SSH ้้ฐ่็ฎ้ๆฌ้。
- No space left on device → ๅ ๅ
ฅ
--max-size้ๅถๆชๆกๅคงๅฐ。
๐ ็ต่ช
rsync ๆฏ Linux ็ณป็ตฑ็ถญ้ไธญไธๅฏๆ็ผบ็ๅทฅๅ
ท,่ฝๅจไธๅฝฑ้ฟๆๅ็ๆ
ๆณไธๅฟซ้ๅๆญฅ่ณๆ。ๆญ้
systemd ๆ cron ่ชๅๅๆ็จ,ๅฏๅคงๅน
้ไฝไบบๅทฅ็ถญ่ญท่ฒ ๆ,็ขบไฟ่ณๆๅฎๅ
จ็ก่。
๐ ๅปถไผธ้ฑ่ฎ
- ๐งฑ Linux systemctl ่ๆๅ็ฎก็ๅ จๆป็ฅ
- ๐ง Linux systemd ๆทฑๅ ฅ่งฃๆ่ๅๅๆต็จ็ฎก็
- ๐ Fail2Ban + iptables ้ฒๆดๅ็ ด่งฃๅฏฆๆฐ
— WWFandy・ไธป้ก็ญ่จ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ