September 18th, 2014 by icez | Posted in Linux | No Comments »
หลังจากลง software ครบหมดแล้วก็ได้เวลาสั่งให้ bacula backup ข้อมูลกันจริงๆ จังๆ แล้วครับ หลังจากนี้ก็อยู่ที่เครื่อง director อย่างเดียวแล้วครับ ไม่ต้องไปไหนแล้ว (ยกเว้นเพิ่มเครื่อง storage หรือ client ก็ไปลงตามขั้นตอนการตั้งค่าแต่ละอันอีกที)
ในการนี้ แนะนำให้สร้างไฟล์ใหม่ขึ้นมา 1 file เป็นชื่อ /etc/bacula/clients/clientname.conf (แทนที่ clientname เป็นชื่อ client นะครับ) เริ่มทีละขั้นนะครับ
เชื่อมต่อ director หา client
Client {
Name = bclient1
Address = 192.0.2.1
FDPort = 9102
Catalog = MyCatalog
Password = "bacula-dir-fd"
File Retention = 30 days
Job Retention = 2 months
AutoPrune = yes
}
Name กับ Password ตั้งให้ตรงกับที่ในฝั่ง Client นะครับ แล้วก็แก้ IP ให้ถูกด้วย (ความจริงเค้าแนะนำให้ตั้งเป็น dns name นะ)
ตั้งพื้นที่เก็บข้อมูล
Pool {
Name = bclient1-pool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 60 days
Maximum Volume Bytes = 50G
Maximum Volumes = 20
LabelFormat = "bclient1-"
}
แนวคิดมันคือการเตรียมพื้นที่สำหรับการเก็บ backup ครับ โดยแบ่งเป็น volume (image file) ขนาดไฟล์ไม่เกิน Maximum Volume Bytes และมีได้ไม่เกิน Maximum Volumes ไฟล์ จากตัวอย่างคือกันพื้นที่ไว้ 1TB (เอาจริงๆ กันไว้เยอะไปนะ 555) และตัวมันเองจะบันทึกแบบกล้องวงจรปิดครับ คือพอเต็มปุ๊ปมันจะไปลบไฟล์อันที่เก่าสุดออกจากระบบ แต่ไม่ต้องกลัวมันลบมั่วนะครับ ถ้าไฟล์เก่าสุดยังต้องใช้ในการ restore อยู่มันจะไม่ลบ แล้วเมลมาด่าว่าพื้นที่เต็มแทน (ฮา)
ตั้งรายการ file ที่จะ backup
ตลกนิดหน่อยตรงที่มันมาตั้งที่ director นี่แหละครับ
FileSet {
Name = "PleskHostingData"
Include {
Options {
signature = SHA1
onefs = no
noatime = yes
compression = GZIP
}
Options {
RegexDir = "^/var/www/vhosts/system/.*/logs"
RegexDir = "^/var/www/vhosts/.*/logs"
RegexDir = "/wp-content/cache/"
exclude = yes
}
File = /etc
File = /var/www/vhosts
File = /var/qmail/mailnames
File = /var/backup/mysql
}
}
ตัวอย่างนี้เป็นการตั้งค่า backup ของ plesk ครับ โดยข้ามไฟล์ log ทั้งหมด เก็บไฟล์เฉพาะส่วนของเว็บ และอีเมลลูกค้า แล้วไปเอาไฟล์จาก database ที่ backup แยกไว้มารวมด้วย
ตั้งเวลา backup อัตโนมัติ
Schedule {
Name = "WeeklyCycle"
Run = Full 1st sun at 00:05
Run = Differential 2nd-5th sun at 00:05
Run = Incremental mon-sat at 00:05
}
เครื่องมือ backup จริงๆ มันต้อง backup อัตโนมัติได้จริงมั้ยครับ และที่สำคัญ ไฟล์ต้องสมบูรณ์และเข้าถึงได้เร็วพอด้วยไม่งั้นก็ไม่รู้จะ backup ไปทำไมในเมื่อ restore ไม่ได้ เพราะงั้นเลยแบ่งการ backup ออกเป็น 3 ขั้นครับ
- backup เต็มรูปแบบทุกวันอาทิตย์แรกของเดือน ตอน 00.05 น.
- backup แบบ differential เทียบกับตัว full ทุกวันอาทิตย์ครั้งที่ 2 ถึง 5 ของเดือน (เดือนนึงคงมีวันอาทิตย์ได้ไม่เกิน 5 ครั้ง ครั้งแรก backup full ครั้งที่ 2 diff)
- backup แบบ incremental วันอื่นๆ
เผื่อใครจะลืม backup แต่ละแบบต่างกันยังไงดูได้ที่วิธีติดตั้ง bacula ครับ
ประกาศงาน backup
อันนี้เป็นการสร้างการ backup จริงๆ แล้วครับ จะมี 2 ส่วนคือประกาศวิธีการ backup กับประกาศการ backup เอง ประมาณนี้
JobDefs {
Name = "bclient1-jobdefs" # ตั้งเอาเองได้เลยครับ ให้ตรงกับด้านล่าง
Type = Backup
Level = Incremental
Client = bclient1 # ระบุชื่อ client ที่จะ backup
FileSet = "PleskHostingData" # ระบุชื่อ FileSet ตามด้านบน
Schedule = "WeeklyCycle" # ระบุชื่อ Schedule ตามด้านบน
Storage = bacula-sd # ระบุชื่อ Bacula Storage Server ตามที่ได้ config ไว้
Messages = Standard
Pool = bclient1-pool # ระบุชื่อ Pool ตามด้านบน
Priority = 10
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}
Job {
Name = "bclient1-backup"
JobDefs = "bclient1-jobdefs" # ตรงกับ Name ของ JobDefs ด้านบน
}
ประกาศงาน restore
มีงานสำหรับ backup ก็ต้องมีสำหรับ restore ครับ จริงๆ เป็นค่าที่ตั้งไว้รอเฉยๆ เผื่อเรียกใช้จะได้สะดวก
Job {
Name = "bclient1-restore"
Type = Restore
Client = bclient1 # ระบุชื่อ client ปลายทางที่จะให้ restore ไป
FileSet = "PleskHostingData" # รายการไฟล์
Storage = bacula-sd # ที่เก็บข้อมูล ว่าไปอ่านมาจากไหน
Pool = Default
Messages = Standard
Where = /tmp/bacula-restores # folder ปลายทางที่จะให้ restore ให้ (สมมติ backup จาก /var/www ไฟล์จะไปอยู่ใน /tmp/bacula-restores/var/www เป็นต้น)
}
เสร็จแล้วครับ !!!!
ข้ามไปยัง
Tags: bacula, configuration