ค้นหาเว็บไซต์

Rsnapshot (ใช้ Rsync) - ยูทิลิตี้สำรองข้อมูลระบบไฟล์ในเครื่อง/ระยะไกลสำหรับ Linux


rsnapshot เป็นยูทิลิตีการสำรองข้อมูลระบบไฟล์โอเพ่นซอร์ส ท้องถิ่น/ระยะไกล เขียนด้วยภาษา Perl ซึ่งได้ประโยชน์จากพลังของ < โปรแกรมRsync และ SSH เพื่อสร้างการสำรองข้อมูลส่วนเพิ่มตามกำหนดเวลาของระบบไฟล์ Linux/Unix ในขณะที่ใช้พื้นที่เพียง การสำรองข้อมูลเต็มรูปแบบเพียงครั้งเดียว บวกกับความแตกต่าง และเก็บข้อมูลสำรองเหล่านั้นไว้ใน ในเครื่อง ไดรฟ์ ไปยัง ฮาร์ดไดรฟ์ อื่น ซึ่งเป็นแท่ง USB ภายนอก ไดรฟ์ที่ติดตั้ง NFS หรือเพียงผ่านเครือข่ายไปยังเครื่องอื่นผ่าน SSH

บทความนี้จะสาธิตวิธีการติดตั้ง ตั้งค่า และใช้ rsnapshot เพื่อสร้างส่วนเพิ่ม รายชั่วโมง, รายวัน, รายสัปดาห์ และ < การสำรองข้อมูลภายในเครื่อง>รายเดือน ที่แข็งแกร่ง รวมถึงการสำรองข้อมูลระยะไกล หากต้องการดำเนินการขั้นตอนทั้งหมดในบทความนี้ คุณจะต้องเป็นผู้ใช้ รูท

ขั้นตอนที่ 1: การติดตั้ง Rsnapshot Backup ใน Linux

การติดตั้ง rsnapshot โดยใช้ Yum และ APT อาจแตกต่างกันเล็กน้อย หากคุณใช้ Red Hat และ การแจกแจงตามเดเบียน

บน RHEL/CentOS

ขั้นแรก คุณจะต้องติดตั้งและเปิดใช้งานพื้นที่เก็บข้อมูลบุคคลที่สามชื่อ EPEL โปรดไปที่ลิงก์ด้านล่างเพื่อติดตั้งและเปิดใช้งานภายใต้ระบบ RHEL/CentOS ของคุณ ผู้ใช้ Fedora ไม่ต้องการการกำหนดค่าพื้นที่เก็บข้อมูลพิเศษใดๆ

  1. ติดตั้งและเปิดใช้งานพื้นที่เก็บข้อมูล EPEL ใน RHEL/CentOS 6/5/4

เมื่อคุณตั้งค่าสิ่งต่าง ๆ แล้ว ให้ติดตั้ง rsnapshot จากบรรทัดคำสั่งดังที่แสดง

yum install rsnapshot
บน Debian/Ubuntu/Linux Mint

ตามค่าเริ่มต้น rsnapshot จะรวมอยู่ในที่เก็บของ Ubuntu ดังนั้นคุณจึงสามารถติดตั้งได้โดยใช้คำสั่ง apt-get ดังที่แสดง

apt-get install rsnapshot

ขั้นตอนที่ 2: การตั้งค่าการเข้าสู่ระบบแบบไม่ใช้รหัสผ่าน SSH

หากต้องการสำรองข้อมูลเซิร์ฟเวอร์ Linux ระยะไกล เซิร์ฟเวอร์สำรอง rsnapshot ของคุณจะสามารถเชื่อมต่อผ่าน SSH โดยไม่ต้องใช้รหัสผ่าน เพื่อให้บรรลุเป้าหมายนี้ คุณจะต้องสร้างคีย์สาธารณะและคีย์ส่วนตัว SSH เพื่อตรวจสอบสิทธิ์บนเซิร์ฟเวอร์ rsnapshot โปรดไปที่ลิงก์ด้านล่างเพื่อสร้างคีย์สาธารณะและคีย์ส่วนตัวบนเซิร์ฟเวอร์สำรอง rsnapshot ของคุณ

  1. สร้างการเข้าสู่ระบบแบบไม่ใช้รหัสผ่าน SSH โดยใช้ SSH Keygen

ขั้นตอนที่ 3: การกำหนดค่า Rsnapshot

ตอนนี้ คุณจะต้องแก้ไขและเพิ่มพารามิเตอร์บางตัวลงในไฟล์การกำหนดค่า rsnapshot เปิดไฟล์ rsnapshot.conf ด้วยโปรแกรมแก้ไข vi หรือ nano

vi /etc/rsnapshot.conf

จากนั้นสร้างไดเร็กทอรีสำรองที่คุณต้องการจัดเก็บข้อมูลสำรองทั้งหมด ในกรณีของฉัน ตำแหน่งไดเร็กทอรีสำรองของฉันคือ “/data/backup/ ” ค้นหาและแก้ไขพารามิเตอร์ต่อไปนี้เพื่อตั้งค่าตำแหน่งสำรองข้อมูล

snapshot_root			 /data/backup/

นอกจากนี้ ให้ยกเลิกหมายเหตุบรรทัด “cmd_ssh” เพื่ออนุญาตให้ทำการสำรองข้อมูลระยะไกลผ่าน SSH หากต้องการยกเลิกการใส่เครื่องหมายบรรทัด ให้ลบ “#” ที่อยู่หน้าบรรทัดต่อไปนี้ เพื่อให้ rsnapshot สามารถถ่ายโอนข้อมูลของคุณไปยังเซิร์ฟเวอร์สำรองได้อย่างปลอดภัย

cmd_ssh			/usr/bin/ssh

ถัดไป คุณต้องตัดสินใจว่าคุณต้องการเก็บข้อมูลสำรองเก่าไว้จำนวนเท่าใด เนื่องจาก rsnapshot ไม่ทราบว่าคุณต้องการถ่ายภาพสแนปช็อตบ่อยเพียงใด คุณต้องระบุจำนวนข้อมูลที่จะบันทึก เพิ่มช่วงเวลาที่จะเก็บ และจำนวนข้อมูลแต่ละรายการ

การตั้งค่าเริ่มต้นนั้นดีพอแล้ว แต่ฉันยังต้องการให้คุณเปิดใช้งานช่วงเวลา “รายเดือน ” เพื่อที่คุณจะได้มีการสำรองข้อมูลระยะยาวไว้ด้วย โปรดแก้ไขส่วนนี้ให้มีลักษณะคล้ายกับการตั้งค่าด้านล่าง

#########################################
          BACKUP INTERVALS            #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

อีกสิ่งหนึ่งที่คุณต้องแก้ไขคือตัวแปร “ssh_args” หากคุณได้เปลี่ยน พอร์ต SSH เริ่มต้น (22) เป็นค่าอื่น คุณจะต้องระบุหมายเลขพอร์ตของเซิร์ฟเวอร์สำรองข้อมูลระยะไกลของคุณ

ssh_args		-p 7851

สุดท้าย เพิ่มไดเร็กทอรีสำรองข้อมูลในเครื่องและระยะไกลที่คุณต้องการสำรองข้อมูล

สำรองไดเรกทอรีท้องถิ่น

หากคุณได้ตัดสินใจสำรองข้อมูลไดเร็กทอรีของคุณภายในเครื่องไปยังเครื่องเดียวกัน รายการสำรองจะมีลักษณะเช่นนี้ ตัวอย่างเช่น ฉันกำลังสำรองข้อมูลไดเรกทอรี /tecmint และ /etc ของฉัน

backup		/tecmint/		localhost/
backup		/etc/			localhost/
สำรองไดเรกทอรีระยะไกล

หากคุณต้องการสำรองข้อมูลไดเร็กทอรีเซิร์ฟเวอร์ระยะไกล คุณต้องบอก rsnapshot ว่าเซิร์ฟเวอร์อยู่ที่ไหนและไดเร็กทอรีใดที่คุณต้องการสำรองข้อมูล ที่นี่ ฉันกำลังสำรองข้อมูลไดเรกทอรีเซิร์ฟเวอร์ระยะไกล “/home” ของฉันภายใต้ไดเรกทอรี “/data/backup” บนเซิร์ฟเวอร์ rsnapshot

backup		 [email :/home/ 		/data/backup/

อ่านเพิ่มเติม:

  1. วิธีสำรอง/ซิงค์ไดเรกทอรีโดยใช้เครื่องมือ Rsync (Remote Sync)
  2. วิธีการถ่ายโอนไฟล์/โฟลเดอร์โดยใช้คำสั่ง SCP
ไม่รวมไฟล์และไดเร็กทอรี

ที่นี่ ฉันจะยกเว้นทุกอย่าง จากนั้นกำหนดเฉพาะสิ่งที่ฉันต้องการสำรองข้อมูลโดยเฉพาะ ในการดำเนินการนี้ คุณจะต้องสร้างไฟล์แยกออก

vi /data/backup/tecmint.exclude

ขั้นแรกให้รับรายการไดเรกทอรีที่คุณต้องการสำรองข้อมูลและเพิ่ม ( – * ) เพื่อยกเว้นทุกอย่างอื่น นี่จะสำรองข้อมูลเฉพาะสิ่งที่คุณระบุไว้ในไฟล์เท่านั้น ไฟล์แยกของฉันมีลักษณะคล้ายกับด้านล่าง

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

การใช้ตัวเลือกแยกไฟล์อาจเป็นเรื่องยุ่งยากมากเนื่องจากการใช้การเรียกซ้ำ rsync ดังนั้นตัวอย่างข้างต้นของฉันอาจไม่ใช่สิ่งที่คุณกำลังมองหา จากนั้นเพิ่มไฟล์ที่ยกเว้นลงในไฟล์ rsnapshot.conf

exclude_file    /data/backup/tecmint.exclude

ในที่สุด คุณเกือบจะเสร็จสิ้นการกำหนดค่าเริ่มต้นแล้ว บันทึกไฟล์การกำหนดค่า “/etc/rsnapshot.conf” ก่อนที่จะดำเนินการต่อไป มีตัวเลือกมากมายที่จะอธิบาย แต่นี่คือไฟล์การกำหนดค่าตัวอย่างของฉัน

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

ตัวเลือกข้างต้นและคำอธิบายข้อโต้แย้งทั้งหมดมีดังนี้:

  1. config_version 1.2=เวอร์ชันไฟล์การกำหนดค่า
  2. snapshot_root=ปลายทางการสำรองข้อมูลเพื่อจัดเก็บสแน็ปช็อต
  3. cmd_cp=เส้นทางที่จะคัดลอกคำสั่ง
  4. cmd_rm=เส้นทางที่จะลบคำสั่ง
  5. cmd_rsync=เส้นทางสู่ rsync
  6. cmd_ssh=เส้นทางสู่ SSH
  7. cmd_logger=พาธไปยังอินเทอร์เฟซคำสั่งเชลล์ไปยัง syslog
  8. cmd_du=เส้นทางไปยังคำสั่งการใช้งานดิสก์
  9. ช่วงเวลารายชั่วโมง=จำนวนการสำรองข้อมูลรายชั่วโมงที่ต้องเก็บไว้
  10. ช่วงเวลารายวัน=จำนวนการสำรองข้อมูลรายวันที่ต้องเก็บไว้
  11. ช่วงเวลารายสัปดาห์=จำนวนการสำรองข้อมูลรายสัปดาห์ที่ต้องเก็บไว้
  12. ช่วงเวลาต่อเดือน=จำนวนการสำรองข้อมูลต่อเดือนที่ต้องเก็บไว้
  13. ssh_args=อาร์กิวเมนต์ SSH เสริม เช่น พอร์ตอื่น (-p )
  14. คำกริยา=อธิบายตนเอง
  15. ระดับบันทึก=อธิบายได้ในตัว
  16. logfile=เส้นทางไปยังไฟล์บันทึก
  17. exclude_file=เส้นทางไปยังไฟล์ที่ยกเว้น (จะอธิบายรายละเอียดเพิ่มเติม)
  18. rsync_long_args=อาร์กิวเมนต์ยาวที่จะส่งผ่านไปยัง rsync
  19. lockfile=อธิบายตนเองได้
  20. การสำรองข้อมูล=เส้นทางแบบเต็มไปยังสิ่งที่จะสำรองข้อมูลตามด้วยเส้นทางสัมพันธ์ของตำแหน่ง

ขั้นตอนที่ 4: ตรวจสอบการกำหนดค่า Rsnapshot

เมื่อคุณกำหนดค่าทั้งหมดเสร็จแล้ว ก็ถึงเวลาตรวจสอบว่าทุกอย่างทำงานตามที่คาดไว้ เรียกใช้คำสั่งต่อไปนี้เพื่อตรวจสอบว่าการกำหนดค่าของคุณมีไวยากรณ์ที่ถูกต้อง

rsnapshot configtest

Syntax OK

หากทุกอย่างถูกต้อง คุณจะได้รับข้อความ “Syntax OK ” หากคุณได้รับข้อความแสดงข้อผิดพลาด นั่นหมายความว่าคุณต้องแก้ไขข้อผิดพลาดเหล่านั้นก่อนที่จะเรียกใช้ rsnapshot

จากนั้น ให้ทำการทดสอบกับสแน็ปช็อตรายการใดรายการหนึ่งเพื่อให้แน่ใจว่าเรากำลังสร้างผลลัพธ์ที่ถูกต้อง เราใช้พารามิเตอร์ “รายชั่วโมง” เพื่อทำการทดสอบการทำงานโดยใช้อาร์กิวเมนต์ -t (test) คำสั่งด้านล่างนี้จะแสดงรายการโดยละเอียดของสิ่งที่จะทำโดยไม่ต้องทำจริง

rsnapshot -t hourly
ผลลัพธ์ตัวอย่าง
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

หมายเหตุ: คำสั่งข้างต้นจะบอก rsnapshot ให้สร้างการสำรองข้อมูล “รายชั่วโมง” จริงๆ แล้วมันจะพิมพ์คำสั่งที่มันจะดำเนินการเมื่อเราดำเนินการจริงๆ

ขั้นตอนที่ 5: เรียกใช้ Rsnapshot ด้วยตนเอง

หลังจากยืนยันผลลัพธ์แล้ว คุณสามารถลบตัวเลือก “-t ” เพื่อรันคำสั่งจริงๆ ได้

rsnapshot hourly

คำสั่งดังกล่าวจะเรียกใช้สคริปต์สำรองข้อมูลด้วยการกำหนดค่าทั้งหมดที่เราเพิ่มในไฟล์ rsnapshot.conf และสร้างไดเรกทอรี “สำรอง” จากนั้นสร้างโครงสร้างไดเรกทอรีด้านล่าง ที่จัดระเบียบไฟล์ของเรา หลังจากรันคำสั่งด้านบนแล้ว คุณสามารถตรวจสอบผลลัพธ์ได้โดยไปที่ไดเร็กทอรีสำรองและแสดงรายการโครงสร้างไดเร็กทอรีโดยใช้คำสั่ง ls -l ดังที่แสดง

cd /data/backup
ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

ขั้นตอนที่ 6: ทำให้กระบวนการเป็นอัตโนมัติ

เพื่อทำให้กระบวนการเป็นอัตโนมัติ คุณต้องกำหนดเวลาให้ rsnapshot ทำงานในช่วงเวลาที่กำหนดจาก Cron ตามค่าเริ่มต้น rsnapshot จะมาพร้อมกับไฟล์ cron ภายใต้ “/etc/cron.d/rsnapshot“ หากไม่มีอยู่ ให้สร้างไฟล์ขึ้นมาและ เพิ่มบรรทัดต่อไปนี้ลงไป

โดยค่าเริ่มต้น กฎจะมีการแสดงความคิดเห็น ดังนั้นคุณต้องลบ “# ” ออกจากด้านหน้าส่วนการกำหนดเวลาเพื่อเปิดใช้งานค่าเหล่านี้

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly
30     3     * * *    root    /usr/bin/rsnapshot daily
0      3     * * 1    root    /usr/bin/rsnapshot weekly
30     2     1 * *    root    /usr/bin/rsnapshot monthly

ให้ฉันอธิบายอย่างชัดเจนว่ากฎ cron ข้างต้นทำอะไร:

  1. ทำงานทุกๆ 4 ชั่วโมง และสร้างไดเร็กทอรี รายชั่วโมง ภายใต้ไดเร็กทอรี /backup
  2. ทำงานทุกวันเวลา 03:30 น. และสร้างไดเร็กทอรี รายวัน ภายใต้ไดเร็กทอรี /backup
  3. รัน รายสัปดาห์ ทุก ๆ วันจันทร์ เวลา 03:00 น. และสร้างไดเร็กทอรี รายสัปดาห์ ภายใต้ /backup ไดเรกทอรีที่แข็งแกร่ง>
  4. รันทุก รายเดือน เวลา 02:30 น. และสร้างไดเร็กทอรี รายเดือน ภายใต้ไดเร็กทอรี /backup

เพื่อให้เข้าใจวิธีการทำงานของ กฎ cron ได้ดีขึ้น ฉันขอแนะนำให้คุณอ่านบทความของเราที่อธิบายไว้

  1. 11 ตัวอย่างการตั้งเวลา Cron

ขั้นตอนที่ 7: รายงาน Rsnapshot

rsnapshot มอบ สคริปต์ Perl การรายงานเล็กๆ น้อยๆ ที่มีประโยชน์ ซึ่งจะส่ง การแจ้งเตือนทางอีเมล ถึงคุณพร้อมรายละเอียดทั้งหมดเกี่ยวกับสิ่งที่เกิดขึ้นระหว่างการสำรองข้อมูลของคุณ ในการตั้งค่าสคริปต์นี้ คุณต้องคัดลอกสคริปต์ไว้ที่ใดที่หนึ่งภายใต้ “/usr/local/bin” และทำให้สคริปต์นั้นสามารถเรียกใช้งานได้

cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl

จากนั้น เพิ่มพารามิเตอร์ “–stats” ในไฟล์ “rsnapshot.conf” ของคุณไปยังส่วนอาร์กิวเมนต์แบบยาวของ rsync

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

ตอนนี้แก้ไข กฎ crontab ที่เพิ่มไว้ก่อนหน้านี้ และเรียกใช้สคริปต์ rsnapreport.pl เพื่อส่งรายงานไปยังที่อยู่อีเมลที่ระบุ

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

เมื่อคุณเพิ่มรายการข้างต้นอย่างถูกต้องแล้ว คุณจะได้รับรายงานไปยังที่อยู่อีเมลของคุณที่คล้ายกับด้านล่าง

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

ลิงค์อ้างอิง

  1. หน้าแรกของ rsnapshot

ตอนนี้เท่านั้น หากมีปัญหาใด ๆ เกิดขึ้นระหว่างการติดตั้งโปรดส่งความคิดเห็นถึงฉัน จนกว่าจะคอยติดตาม TecMint เพื่อดูบทความที่น่าสนใจเพิ่มเติมเกี่ยวกับโลกโอเพ่นซอร์ส