SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
An Essential Guide
Remote Data
Backing-up With
RSync
ELASTIX BACKUP — How-to
Synology NAS, RSync, Crontab → Perfect!
→ samdx – ⃗2017 ✓
Mục lục
1 Roadmap 3
1.1 Quick&Dirty Guide . . . . . . . . . . . . . . . . . . . . . . . 3
2 Chuẩn bị người dùng và thư mục lưu trữ 4
2.1 Các thao tác trên NAS . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 NAS: Tạo người dùng . . . . . . . . . . . . . . . . . 4
2.1.2 NAS: Tạo thư mục . . . . . . . . . . . . . . . . . . . 4
2.1.3 Terminal & SNMP . . . . . . . . . . . . . . . . . . . 5
2.2 Các thao tác trên Elas x . . . . . . . . . . . . . . . . . . . . 5
2.2.1 Login vào server với tài khoản root . . . . . . . . . 5
2.2.2 Tạo người dùng mới . . . . . . . . . . . . . . . . . . 5
2.2.3 Thử đăng nhập vào NAS . . . . . . . . . . . . . . . . 6
2
3 Cấu hình SSH 7
3.1 Tạo SSH key cho người dùng . . . . . . . . . . . . . . . . . 7
3.2 Copy public key vào NAS . . . . . . . . . . . . . . . . . . . 7
3.2.1 ssh-copy-id . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.2 Các cách khác . . . . . . . . . . . . . . . . . . . . . . 8
3.3 Đăng nhập bằng public key . . . . . . . . . . . . . . . . . . 8
3.4 A bit tweak for SSHD . . . . . . . . . . . . . . . . . . . . . . 9
4 Elas x Auto-backup 11
4.1 Các công cụ cần thiết . . . . . . . . . . . . . . . . . . . . . . 11
4.2 Tuỳ chỉnh công cụ . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2.1 Tạo thư mục lưu trữ . . . . . . . . . . . . . . . . . . 11
4.2.2 Tạo bản sao các công cụ . . . . . . . . . . . . . . . . 12
4.2.3 Cấp quyền đọc cho tập n elas x.conf . . . . . . . 12
4.3 Chỉnh sửa backupengine . . . . . . . . . . . . . . . . . . . . 13
4.4 Chỉnh sửa automa c_backup.php . . . . . . . . . . . . . . . 14
5 Đồng bộ với RSync 15
5.1 Thử rsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2 Các thư mục cần sao lưu . . . . . . . . . . . . . . . . . . . . 16
5.3 Kịch bản sao lưu . . . . . . . . . . . . . . . . . . . . . . . . 17
5.3.1 automa c_sync.sh . . . . . . . . . . . . . . . . . . . 17
6 Crontab 19
6.1 Các ví dụ về lập lịch . . . . . . . . . . . . . . . . . . . . . . . 19
7 TODO 21
3
1 Roadmap
• Tạo người dùng mới đủ phân quyền chạy sao lưu, trên NAS lẫn
Server.
• Tạo thư mục nhằm mục đích dùng lưu trữ sao lưu trên NAS.
• Cấu hình SSH cho người dùng: Passwordless login with publick key.
• ///////Script////để/////sao/////lưu////dữ/////liệu//////‘sql‘:////////////////‘mysqldump‘//////////////////‘asteriskcdrdb‘////////////database.
• Chỉnh sửa automatic_backup dựa vào backupengine.
• Script để đồng bộ dữ liệu lên NAS: rsync.
• Cho vào Crond với crontab.
1.1 Quick&Dirty Guide
• Tạo người dùng và thư mục lưu trữ bộ công cụ sao lưu.
• Sao chép các công cụ vào thư mục trên dữ nguyên cấu trúc.
• Cấp quyền đọc cho người dùng vừa tạo đối với tập n /etc/elastix.conf.
• Gọi crontab với tập n lên lịch định sẵn trong $backupdir/bin/cron.
4
2 Chuẩn bị người dùng và thư mục lưu trữ
Tại mục này chúng ta sẽ hoàn thành việc khởi tạo người dùng mới cho
mục đích chạy tác vụ sao lưu. Thực tế, có thể sử dụng ngay tài khoản root
trên hệ thống, nhưng điều này có thể không ện. Tất nhiên cũng có thể
sử dụng người dùng đã tồn tại, thì có thể bỏ qua bước này.
Tương tự đối với không gian lưu trữ.
2.1 Các thao tác trên NAS
2.1.1 NAS: Tạo người dùng
Các bước:
1. Control Panel > User
2. Create > Create User
Tại đây thực hiện các lựa chọn về tên, nhóm, phân quyền của người
dùng để hoàn thành.
Tạo mới người dùng để đồng bộ lên từ Elas x. Người dùng này bắt
buộc phải đáp ứng:
• Có quyền ghi vào thư mục chỉ định.
• Có quyền sử dụng SSH (Terminal & SNMP).
Thực tế, có thể sử dụng tài khoản admin hiện có của NAS.
Lưu ý: Người dùng thuộc nhóm Administrator có quyền SSH.
2.1.2 NAS: Tạo thư mục
Các bước:
1. Control Panel > Shared Folder
5
2. Create hoặc Edit
Các tuỳ chọn nên thực hiện:
• Ẩn thư mục trên My Network Places.
• Ẩn thư mục con và tập n khỏi những người dùng không có quyền.
Lưu ý cấp quyền Đọc+Ghi cho người dùng vừa tạo nhằm vào mục
đích chạy sao lưu.
2.1.3 Terminal & SNMP
Control Panel > Terminal & SNMP:
• SSH Enabled.
• Specify port or leave it default (22).
2.2 Các thao tác trên Elas x
2.2.1 Login vào server với tài khoản root
$ ssh -l root elastixht
root@elastixht's password:
2.2.2 Tạo người dùng mới
Bước này tạo mới một người dùng, đồng thời gán mật khẩu, tạo thư
mục nhà (home) và gán shell mặc định.
• Tên (tham số cuối của lệnh dưới): tốt nhất nên trùng với người dùng
vừa tạo trên NAS.
6
• Mật khẩu không bắt buộc tương tự, nhưng có thể dùng chung mật
khẩu, dễ nhớ.
[root@elastixht ~]# useradd -c elastix -m -p daylamatkhau samdx
[root@elastixht ~]# su samdx
[samdx@elastixht ~]$ pwd
/home/samdx
2.2.3 Thử đăng nhập vào NAS
Thử đăng nhập vào NAS với nguời dùng vừa tạo, sử dụng SSH. Mật
khẩu là mật khẩu đã tạo trên NAS.
[samdx@centos-01 ~]$ ssh backupht
samdx@backupht's password:
Last login: Sun Mar 12 17:26:04 2017 from 10.0.0.82
BusyBox v1.16.1 (2015-05-12 15:50:32 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
BackupHT>
7
3 Cấu hình SSH
Mục đích: Cài đặt SSH để người dùng có thể đăng nhập sử dụng mã
khoá công khai thay vì sử dụng mật khẩu → ện lợi và an toàn hơn, sẽ
không cần parse mật khẩu vào cho script rsync dùng để đồng bộ.
TODO:
• Tạo mới keygen
• Cho public key vừa tạo vào file ∼/.ssh/authorized_keys trên NAS
tương ứng người dùng.
3.1 Tạo SSH key cho người dùng
Sử dụng ssh-keygen như ví dụ dưới: tạo mới một mã khoá RSA.
Mục đích sử dụng publick key để đăng nhập vào NAS mà không cần
mật khẩu, nên tại dòng Enter passphrase sẽ bỏ trống, đơn giản là bấm
Enter để ếp tục.
[admin@elastixht ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
Created directory '/home/admin/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
The key fingerprint is:
58:82:5c:ff:65:20:3d:af:1f:87:aa:10:5c:e7:e2:d4 admin@elastixht.htbranch
3.2 Copy public key vào NAS
3.2.1 ssh-copy-id
Sử dụng ssh-copy-id theo cú pháp như dưới, mặc định ssh-copy-id
sẽ sử dụng file ∼/.ssh/id_rsa.pub. Trường hợp muốn chỉ định public key
khác, sử dụng tuỳ chọn -i /path/to/pub_file khi gọi lệnh.
8
[samdx@centos-01 ~]$ ssh-copy-id backupht
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed --
if you are prompted now it is to install the new keys
samdx@backupht's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'backupht'"
and check to make sure that only the key(s) you wanted were added.
[samdx@centos-01 ~]$
3.2.2 Các cách khác
Ngoài ra, có thể sử dụng những cách khác để thực hiện việc trên. Mục
đích là để copy nội dung của public key vào file ∼/.ssh/authorized_key
của người dùng tương ứng trên SSH server, ở đây là NAS.
• Từ WEBUI, dùng Text Editor tạo mới và thêm nội dung cho file
authorized_key.
• SSH vào NAS với người dùng tương ứng và thêm nội dung cho file.
• SSH vào NAS với một tài khoản khác, chuyển đổi người dùng (su)và
thực hiện việc thêm nội dung cho file.
Hãy lưu ý về phân quyền của thư mục ∼/.ssh và authorized_key, các
lỗi đăng nhập có thể phát sinh từ đây. Phân quyền 700 cho ∼/.ssh và
600 cho authorized_key.
3.3 Đăng nhập bằng public key
Thử login:
9
[samdx@centos-01 ~]$ ssh backupht
Last login: Sun Mar 12 17:42:36 2017 from 10.0.0.82
BusyBox v1.16.1 (2015-05-12 15:50:32 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
BackupHT>
Như vậy là đã có thể đăng nhập bằng public key, mà không sử dụng
trực ếp mật khẩu của người dùng. Điều này tạo thuận ện cho việc gọi
rsync về sau.
3.4 A bit tweak for SSHD
Chúng ta sẽ làm một vài thay đổi cho SSHD trên Server, áp dụng cho
sshd cả trên NAS hay trên Elas x.
• Đổi cổng mặc định.
• Tắt đăng nhập bằng người dùng root.
• Giới hạn người dùng có thể đăng nhập bằng SSH.
• Tắt xác thực bằng mật khẩu, bắt buộc dùng Public key.
Sử dụng vim hoặc bất kỳ trình soạn thảo nào bạn thuận tay, và sửa file
như dưới:
[root@elastixht ~]# vim /etc/sshd/sshd_config
# Use 8822 instead
Port 8822
# Disable root login
RootPermitLogin no
10
# Allowed users
AllowUsers samdx
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
# Change to no to disable s/key passwords
ChallengeResponseAuthentication no
11
4 Elas x Auto-backup
4.1 Các công cụ cần thiết
Elas x cung cấp công cụ phục vụ cho việc sao lưu dữ liệu, bao gồm
từ cơ sở dữ liệu tới các file ghi âm.
Công cụ này gọi là backupengine, nằm tại:
/usr/share/elastix/privileged/backupengine
Công cụ này định nghĩa các thành phần (components) của hệ thống
Elas x và thực hiện sao lưu theo chỉ định, các thành phần hoặc mặc định
là tất cả.
Đồng thời, Elas x cũng cung cấp công cụ mục đích thực hiện tự động
sao lưu, được lưu trữ tại:
/var/www/backup/automatic_backup.php
Đây là thư mục mặc định chứa các tập n sao lưu khi thực hiện sao
lưu từ WEBUI.
4.2 Tuỳ chỉnh công cụ
Chúng ta phải tuỳ chỉnh một chút các công cụ này cho mục đích sao
lưu theo ý.
4.2.1 Tạo thư mục lưu trữ
Đầu ên, tạo một thư mục để làm việc. Mục đích lưu trữ các công cụ
và các tập n chứa dữ liệu sao lưu.
Thư mục lưu trữ có thể đặt bất kỳ đâu, tuỳ ý (trừ /{b,r}oot). Giả sử
đặt trong /var.
12
Do người dùng mới tạo ra không có quyền ghi (w) trong thư mục /var,
nên phải sử dụng quyền root của hệ thống để tạo thư mục, sau đó chuyển
quyền qua cho người dùng này.
Có thể trực ếp sử dụng tài khoản root hoặc sudo (Trường hợp sudo
phải thêm người dùng vào file sudoers, sửa trực ếp hoặc sử dụng visudo).
Dưới đây là ví dụ:
[root@elastixht bak]# sudo mkdir /var/backup
[root@elastixht bak]# sudo chown -R samdx: /var/backup/
[root@elastixht bak]# ls -l !$
drwxr-xr-x 2 samdx samdx 4096 Mar 12 18:34 /var/backup/
[root@elastixht bak]#
4.2.2 Tạo bản sao các công cụ
Sao chép các công cụ ở mục 4.1 (Các công cụ cần thiết).
[samdx@elastixht /var/backup]$ cp /usr/share/elastix/privileged/backupengine .
[samdx@elastixht /var/backup]$ cp /var/www/backup/automatic_backup.php .
4.2.3 Cấp quyền đọc cho tập n elas x.conf
Tập n automatic_backup.php gọi tập n backupengine để thực hiện
sao lưu.
Quá trình sao lưu yêu cầu phải có mật khẩu root của MySQL, vốn
được lưu trong file /etc/elastix.conf.
// backupengine
define('PASSWD_PATH', '/etc/elastix.conf');
Tập n được thiết lập chỉ đọc/ghi đối với người dùng asterisk vốn
không nằm trong /etc/group, nên không thể cấp quyền sử dụng chmod.
• Trước:
13
ls -l /etc/elastix.conf
-rw------- 1 asterisk asterisk 71 Aug 14 2016 /etc/elastix.conf
Vì vậy, cần cấp quyền đọc cho người dùng trên file này sử dụng công
cụ khác (ACL control):
$ sudo setfacl -m u:samdx:r /etc/elastix.conf
• Sau:
ls -l /etc/elastix.conf
-rw-r-----+ 1 asterisk asterisk 71 Aug 14 2016 /etc/elastix.conf
4.3 Chỉnh sửa backupengine
Do backupengine được giả định sẽ thực thi sử dụng quyền root, nên
sau khi thực hiện sao lưu, script cần phân quyền lại thư mục/tập n sao
lưu vừa được tạo bởi root cho người dùng asterisk, tại dòng 716–717
của script, như dưới:
// Switch tarball file permission to asterisk:asterisk
chown($sBackupPath, 'asterisk');
chgrp($sBackupPath, 'asterisk');
Để loại bỏ hành vi này, vì chúng ta sẽ thực thi script này bằng người
dùng bình thường (không sudo), đơn giản là ta xoá/comment 2 dòng này,
thành:
// Switch tarball file permission to asterisk:asterisk
//chown($sBackupPath, 'asterisk');
//chgrp($sBackupPath, 'asterisk');
14
$ sed -i '716s+chown+//chown+' backupengine
$ sed -i '717s+chgrp+//chgrp+' backupengine
4.4 Chỉnh sửa automa c_backup.php
Mặc định, script này sẽ gọi file backupengine trên từ trong /usr/share,
và thư mục sao lưu mặc định là /var/www/backup.
$sBackupDir = '/var/www/backup';
system('/usr/share/elastix/privileged/backupengine --backup --backupfile '. );
Một vài thay đổi:
• Thư mục sao lưu mới là /var/backup/elastix_backup
• backupengine đã sửa nằm trong PATH khi đưa vào crond (mục 6 trang
19) sau này, nên dùng đường dẫn tuyệt đối hoặc không là tuỳ chọn.
• Chỉ định các thành phần (components) cần sao lưu, thay vì sao lưu
tất cả như trên.
Vì vậy, automatic_backup.php sau khi đã sửa sẽ như dưới. Các thành
phần được định nghĩa trong backupengine. Có thể lựa chọn tất cả ngoại
từ as_monitor và as_voicemail vì mục sau (Đồng bộ với RSync trang 15)
sẽ thực hiện sao lưu các dữ liệu nặng này.
// automatic_backup.php
$sBackupDir = '/var/backup/elastix_backup';
system('backupengine --backup --components as_db,as_config_files --backupfile '. );
15
5 Đồng bộ với RSync
Mục này sẽ thực hiện đồng bộ tất cả những dữ liệu cần sao lưu lên
server khác, trường hợp này là NAS.
Ở mục Tạo thư mục lưu trữ (trang 11) chúng ta đã tạo thư mục dành
cho công việc sao lưu, và mục Các công cụ cần thiết (trang 11) chúng ta
đã chuẩn bị các công cụ cho việc sao lưu.
Ta chuyển thư mục làm việc đến /var/backup/ cùng các công cụ ở
mục trước.
Các việc ến hành:
• Thử rsync với public key đã có.
• Lên danh sách các thư mục/item cần sao lưu.
• Tạo script cho việc sao lưu.
5.1 Thử rsync
Sau khi có thể ssh sử dụng public key (Đăng nhập bằng public key
trang 8), thử sử dụng rsync để đảm bảo rằng không lỗi nào phát sinh liên
quan đến việc xác thực khi đăng nhập.
[samdx@elastixht /var/backup]$ echo -e "## WELCOMEn" > README.md
[samdx@elastixht /var/backup]$ rsync -av README.md backupht:/volume1/elastix-bak/
sending incremental file list
README.md
sent 104 bytes received 31 bytes 90.00 bytes/sec
total size is 12 speedup is 0.09
[samdx@elastixht /var/backup]$ ssh backupht
Last login: Sun Mar 12 18:23:42 2017 from 10.0.0.12
BusyBox v1.16.1 (2015-05-12 15:50:32 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
BackupHT> ls /volume1/elastix-bak/
README.md
16
BackupHT> ls -l /volume1/elastix-bak/
total 8
-rw-rw-r-- 1 samdx users 12 2017-03-12 18:28 README.md
5.2 Các thư mục cần sao lưu
Danh sách các thư mục cần sao lưu, sẽ được cho vào một tập n, tạm
gọi là included-items.txt.
Mục đích sao lưu những thành phần của Elas x, nội dung tập n sẽ
tương tự:
/var/spool/asterisk/monitor
/var/www/backup
/var/log/asterisk/cdr-csv
/var/backup
Trong đó:
• /var/spool/asterisk/monitor: Thư mục chứa các bản ghi âm, thường
rất nặng.
• /var/www/backup: Những tập n sao lưu được lệnh từ WEBGUI sẽ
lưu tại đây.
• /var/log/asterisk/cdr-csv: Bản ghi danh sách cuộc gọi, từ bảng
cdr của asteriskcdrdb.
• /var/backup: Thư mục hiện hành, bao gồm các công cụ sao lưu và
các bản sao lưu được tạo bởi automatic_backup.php đã nói ở trên.
Có thể thêm các thành phần nằm trong thư mục /var/spool/asterisk,
ví dụ voicemaill nếu cần.
17
5.3 Kịch bản sao lưu
Mục này chúng ta tạo thư mục lưu các kịch bản và các file dành cho
việc sao lưu.
• Tạo thư mục bin trong /var/backup.
• Tạo mới file automatic_sync.sh trong thư mục trên.
• Di chuyển các tập n bao gồm automatic_backup.php, backupengine,
và included-items.txt.
[samdx@elastixht /var/backup]$ mkdỉr bin
[samdx@elastixht /var/backup]$ mv *.{php,txt} bin/
[samdx@elastixht /var/backup]$ vim bin/automatic_sync.sh
5.3.1 automa c_sync.sh
Tập n kịch bản này thực hiện việc đồng bộ các thư mục chỉ định đến
đích là một thư mục trên NAS đã được định trước, đủ quyền đọc/ghi.
#!/bin/env bash
# THIS VERY SIMPLE AND UGLY SCRIPT
# Chỉ định tên người dùng và hostname của NAS
SSH_USER=samdx
SSH_SERVER=backupht
# Các tuỳ chọn cho rsync:
# Thư mục lưu trên NAS
# Giới hạn băng thông nếu cần (Hà Tĩnh 100MB based)
# Các tuỳ chọn khác nếu có
# The destination is on the SSH_SERVER not local
RSYNC_DEST_DIR="volume1/elastix-bak"
RSYNC_BWLIMIT="5120" # 5MB, unit in KBPS
RSYNC_OPT=""
if [ -n $RSYNC_BWLIMIT ]
then
RSYNC_OPT="${RSYNC_OPT} --bwlimit=$RSYNC_BWLIMIT"
18
fi
# Get current datetime
CURRENT_TIME=$(date +%Y-%m-%d-%H-%M-%Z)
# The path where this script and/or some other file lives on
BACK_DIR="/var/backup"
# The folder that holds rsync log files
SYNC_LOG_DIR="synclog"
# Specify the file that contains all the location need to be synced
INCLUDE_FILE_NAME="included-items.txt"
INCLUDE_FILE=$BACK_DIR/bin/$INCLUDE_FILE_NAME
# The sync log file name and path
SYNC_LOG_FILE="$BACK_DIR/$SYNC_LOG_DIR/$CURRENT_TIME.log"
# Then sync
rsync -ar $RSYNC_OPT --files-from=$INCLUDE_FILE 
/ $SSH_USER@$SSH_SERVER:/$RSYNC_DEST_DIR 
> $SYNC_LOG_FILE 2>&1
19
6 Crontab
Sau khi các thành phần khác đã sẵn sàng, ta sử dụng crontab để lên
lịch đồng bộ tự động.
Xác định thời điểm cần thực hiện sao lưu và đồng bộ, sau đó chỉnh
sửa với crontab -e. crontab gọi vi để sửa tập n, :wq để lưu và thoát.
PATH=/var/backup/bin:/bin:/usr/bin:/usr/local/bin
SHELL=/bin/bash
MAILTO=""
0 19 * * * automatic_sync
0 12 * * * automatic_backup
Trong đó:
• PATH: chỉ định các đường dẫn chứa các tập n thực thi mà đã được
chuẩn bị ở trên, bao gồm /var/backup/bin.
• SHELL: chỉ định shell sẽ được sử dụng, mặc định crontab sử dụng
/bin/sh.
• Bên dưới là lịch và lệnh gọi các công cụ tương ứng. Đồng bộ vào
lúc 19h mỗi ngày, sao lưu vào lúc 12h mỗi ngày.
Các tập n kịch bản đã được đổi tên và loại bỏ phần mở rộng. Chúng
ta không cần lo lắng, Linux sẽ nhận dạng dựa trên kiểu MIME và header của
tập n.
6.1 Các ví dụ về lập lịch
@daily
• Mỗi ngày, nh từ lúc thêm vào lịch.
20
0 */2 * * *
• Mỗi 2 ếng một, tất cả các ngày.
0 0 * * 6
• Vào lúc 00:00 mỗi thứ 7.
0 12 * */3 SAT
• Vào lúc 12:00 thứ 7 mỗi 3 tháng một (theo quý). Đặt Ngày 13 tháng
3 năm 2017 đến 01/04 là thứ 7 kế ếp thực thi.
21
7 TODO
Các nội dung khác cần hoàn thiện và bổ sung, như:
• Email thông báo mỗi khi sao lưu/đồng bộ xong. Tuỳ loại sao lưu,
theo ngày, tuần.
• Tìm kiếm, loại bỏ hoặc phân tách các gói sao lưu quá lâu một khoảng
thời gian nào đó (60 ngày chẳng hạn), xoá hoặc thông báo cho
Admin.
• Tương tự đối với các tập n log của kịch bản đồng bộ.
22

Más contenido relacionado

La actualidad más candente

Linux2 lap trinhshellchohocvien
Linux2 lap trinhshellchohocvienLinux2 lap trinhshellchohocvien
Linux2 lap trinhshellchohocvienasakebigone
 
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 FithouTài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 FithouTú Cao
 
bao cao linux
bao cao linuxbao cao linux
bao cao linuxbinhnv186
 
Quản lý hyper p1
Quản lý hyper p1Quản lý hyper p1
Quản lý hyper p1laonap166
 
Tìm hiểu về Linux
Tìm hiểu về LinuxTìm hiểu về Linux
Tìm hiểu về LinuxNhan Nguyen
 

La actualidad más candente (6)

Linux2 lap trinhshellchohocvien
Linux2 lap trinhshellchohocvienLinux2 lap trinhshellchohocvien
Linux2 lap trinhshellchohocvien
 
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 FithouTài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
Tài liệu hướng dẫn quản lý user, phân quyền trong Ubuntu (linux) - 10B4 Fithou
 
bao cao linux
bao cao linuxbao cao linux
bao cao linux
 
Quản lý hyper p1
Quản lý hyper p1Quản lý hyper p1
Quản lý hyper p1
 
Tìm hiểu về Linux
Tìm hiểu về LinuxTìm hiểu về Linux
Tìm hiểu về Linux
 
Linux Introduction
Linux IntroductionLinux Introduction
Linux Introduction
 

Destacado

StoreGrid : Restore & Recovery
StoreGrid : Restore & RecoveryStoreGrid : Restore & Recovery
StoreGrid : Restore & RecoveryRevolucion
 
FreeNAS backup solution
FreeNAS backup solutionFreeNAS backup solution
FreeNAS backup solutiona3
 
HP-UX with Rsync by Dusan Baljevic
HP-UX with Rsync by Dusan BaljevicHP-UX with Rsync by Dusan Baljevic
HP-UX with Rsync by Dusan BaljevicCircling Cycle
 
FreeNAS installation and setup for shared storage (1/2)
FreeNAS installation and setup for shared storage (1/2)FreeNAS installation and setup for shared storage (1/2)
FreeNAS installation and setup for shared storage (1/2)康志強 大人
 
HP-UX Dynamic Root Disk Boot Disk Cloning Benefits and Use Cases by Dusan Bal...
HP-UX Dynamic Root Disk Boot Disk Cloning Benefits and Use Cases by Dusan Bal...HP-UX Dynamic Root Disk Boot Disk Cloning Benefits and Use Cases by Dusan Bal...
HP-UX Dynamic Root Disk Boot Disk Cloning Benefits and Use Cases by Dusan Bal...Circling Cycle
 
Sizing your alfresco platform
Sizing your alfresco platformSizing your alfresco platform
Sizing your alfresco platformLuis Cabaceira
 
Network Effects
Network EffectsNetwork Effects
Network Effectsa16z
 

Destacado (7)

StoreGrid : Restore & Recovery
StoreGrid : Restore & RecoveryStoreGrid : Restore & Recovery
StoreGrid : Restore & Recovery
 
FreeNAS backup solution
FreeNAS backup solutionFreeNAS backup solution
FreeNAS backup solution
 
HP-UX with Rsync by Dusan Baljevic
HP-UX with Rsync by Dusan BaljevicHP-UX with Rsync by Dusan Baljevic
HP-UX with Rsync by Dusan Baljevic
 
FreeNAS installation and setup for shared storage (1/2)
FreeNAS installation and setup for shared storage (1/2)FreeNAS installation and setup for shared storage (1/2)
FreeNAS installation and setup for shared storage (1/2)
 
HP-UX Dynamic Root Disk Boot Disk Cloning Benefits and Use Cases by Dusan Bal...
HP-UX Dynamic Root Disk Boot Disk Cloning Benefits and Use Cases by Dusan Bal...HP-UX Dynamic Root Disk Boot Disk Cloning Benefits and Use Cases by Dusan Bal...
HP-UX Dynamic Root Disk Boot Disk Cloning Benefits and Use Cases by Dusan Bal...
 
Sizing your alfresco platform
Sizing your alfresco platformSizing your alfresco platform
Sizing your alfresco platform
 
Network Effects
Network EffectsNetwork Effects
Network Effects
 

Similar a Elastix backup-guide

Tom tat lenh_ubuntu
Tom tat lenh_ubuntuTom tat lenh_ubuntu
Tom tat lenh_ubuntuthanhhokh03
 
Tom tat lenh ubuntu
Tom tat lenh ubuntuTom tat lenh ubuntu
Tom tat lenh ubuntunghoanganh
 
Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)laonap166
 
Cài đặt và cấu hình căn bản hệ điều hành.pptx
Cài đặt và cấu hình căn bản hệ điều hành.pptxCài đặt và cấu hình căn bản hệ điều hành.pptx
Cài đặt và cấu hình căn bản hệ điều hành.pptxchamkhe
 
Cài đặt web server (linux)-Pham Hoang Phuc-Athena
Cài đặt web server (linux)-Pham Hoang Phuc-AthenaCài đặt web server (linux)-Pham Hoang Phuc-Athena
Cài đặt web server (linux)-Pham Hoang Phuc-AthenaHoàng Phúc Phạm
 
Linux thietlaphethongmangubunt-45879
Linux thietlaphethongmangubunt-45879Linux thietlaphethongmangubunt-45879
Linux thietlaphethongmangubunt-45879Son Giap
 
Openvpn nhóm-dbrr-update2
Openvpn nhóm-dbrr-update2Openvpn nhóm-dbrr-update2
Openvpn nhóm-dbrr-update2TngH36
 
Cài đặt quản trị hệ điều hành Ubuntu 12.0
Cài đặt quản trị  hệ điều hành Ubuntu 12.0Cài đặt quản trị  hệ điều hành Ubuntu 12.0
Cài đặt quản trị hệ điều hành Ubuntu 12.0Cường Nguyễn Tam
 
Huong-Dan-Su-Dung-GNS3.pdf
Huong-Dan-Su-Dung-GNS3.pdfHuong-Dan-Su-Dung-GNS3.pdf
Huong-Dan-Su-Dung-GNS3.pdfThngHunh59
 
Tai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracleTai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracleKiet Tran
 
Devexpress cho asp.net
Devexpress cho asp.netDevexpress cho asp.net
Devexpress cho asp.netthichxoidau
 
cai dat va quan tri Zpanel
cai dat va quan tri Zpanelcai dat va quan tri Zpanel
cai dat va quan tri Zpanellaonap166
 

Similar a Elastix backup-guide (20)

Tom tat lenh_ubuntu
Tom tat lenh_ubuntuTom tat lenh_ubuntu
Tom tat lenh_ubuntu
 
Tom tat lenh ubuntu
Tom tat lenh ubuntuTom tat lenh ubuntu
Tom tat lenh ubuntu
 
Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)
 
Linux security
Linux securityLinux security
Linux security
 
Các lệnh shell cơ bản trong linux
Các lệnh shell cơ bản trong linuxCác lệnh shell cơ bản trong linux
Các lệnh shell cơ bản trong linux
 
Hdubuntu
HdubuntuHdubuntu
Hdubuntu
 
Sử dụng Linux
Sử dụng LinuxSử dụng Linux
Sử dụng Linux
 
Cài đặt và cấu hình căn bản hệ điều hành.pptx
Cài đặt và cấu hình căn bản hệ điều hành.pptxCài đặt và cấu hình căn bản hệ điều hành.pptx
Cài đặt và cấu hình căn bản hệ điều hành.pptx
 
Báo cáo tuần đồ án
Báo cáo tuần đồ ánBáo cáo tuần đồ án
Báo cáo tuần đồ án
 
Thuc hanh 13
Thuc hanh  13Thuc hanh  13
Thuc hanh 13
 
Cài đặt web server (linux)-Pham Hoang Phuc-Athena
Cài đặt web server (linux)-Pham Hoang Phuc-AthenaCài đặt web server (linux)-Pham Hoang Phuc-Athena
Cài đặt web server (linux)-Pham Hoang Phuc-Athena
 
Linux thietlaphethongmangubunt-45879
Linux thietlaphethongmangubunt-45879Linux thietlaphethongmangubunt-45879
Linux thietlaphethongmangubunt-45879
 
Openvpn nhóm-dbrr-update2
Openvpn nhóm-dbrr-update2Openvpn nhóm-dbrr-update2
Openvpn nhóm-dbrr-update2
 
Cài đặt quản trị hệ điều hành Ubuntu 12.0
Cài đặt quản trị  hệ điều hành Ubuntu 12.0Cài đặt quản trị  hệ điều hành Ubuntu 12.0
Cài đặt quản trị hệ điều hành Ubuntu 12.0
 
Huong-Dan-Su-Dung-GNS3.pdf
Huong-Dan-Su-Dung-GNS3.pdfHuong-Dan-Su-Dung-GNS3.pdf
Huong-Dan-Su-Dung-GNS3.pdf
 
Tai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracleTai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracle
 
Quản lý ổ đĩa
Quản lý ổ đĩaQuản lý ổ đĩa
Quản lý ổ đĩa
 
Devexpress cho asp.net
Devexpress cho asp.netDevexpress cho asp.net
Devexpress cho asp.net
 
Linux+02
Linux+02Linux+02
Linux+02
 
cai dat va quan tri Zpanel
cai dat va quan tri Zpanelcai dat va quan tri Zpanel
cai dat va quan tri Zpanel
 

Elastix backup-guide

  • 1. An Essential Guide Remote Data Backing-up With RSync
  • 2. ELASTIX BACKUP — How-to Synology NAS, RSync, Crontab → Perfect! → samdx – ⃗2017 ✓ Mục lục 1 Roadmap 3 1.1 Quick&Dirty Guide . . . . . . . . . . . . . . . . . . . . . . . 3 2 Chuẩn bị người dùng và thư mục lưu trữ 4 2.1 Các thao tác trên NAS . . . . . . . . . . . . . . . . . . . . . 4 2.1.1 NAS: Tạo người dùng . . . . . . . . . . . . . . . . . 4 2.1.2 NAS: Tạo thư mục . . . . . . . . . . . . . . . . . . . 4 2.1.3 Terminal & SNMP . . . . . . . . . . . . . . . . . . . 5 2.2 Các thao tác trên Elas x . . . . . . . . . . . . . . . . . . . . 5 2.2.1 Login vào server với tài khoản root . . . . . . . . . 5 2.2.2 Tạo người dùng mới . . . . . . . . . . . . . . . . . . 5 2.2.3 Thử đăng nhập vào NAS . . . . . . . . . . . . . . . . 6 2
  • 3. 3 Cấu hình SSH 7 3.1 Tạo SSH key cho người dùng . . . . . . . . . . . . . . . . . 7 3.2 Copy public key vào NAS . . . . . . . . . . . . . . . . . . . 7 3.2.1 ssh-copy-id . . . . . . . . . . . . . . . . . . . . . . . 7 3.2.2 Các cách khác . . . . . . . . . . . . . . . . . . . . . . 8 3.3 Đăng nhập bằng public key . . . . . . . . . . . . . . . . . . 8 3.4 A bit tweak for SSHD . . . . . . . . . . . . . . . . . . . . . . 9 4 Elas x Auto-backup 11 4.1 Các công cụ cần thiết . . . . . . . . . . . . . . . . . . . . . . 11 4.2 Tuỳ chỉnh công cụ . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2.1 Tạo thư mục lưu trữ . . . . . . . . . . . . . . . . . . 11 4.2.2 Tạo bản sao các công cụ . . . . . . . . . . . . . . . . 12 4.2.3 Cấp quyền đọc cho tập n elas x.conf . . . . . . . 12 4.3 Chỉnh sửa backupengine . . . . . . . . . . . . . . . . . . . . 13 4.4 Chỉnh sửa automa c_backup.php . . . . . . . . . . . . . . . 14 5 Đồng bộ với RSync 15 5.1 Thử rsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2 Các thư mục cần sao lưu . . . . . . . . . . . . . . . . . . . . 16 5.3 Kịch bản sao lưu . . . . . . . . . . . . . . . . . . . . . . . . 17 5.3.1 automa c_sync.sh . . . . . . . . . . . . . . . . . . . 17 6 Crontab 19 6.1 Các ví dụ về lập lịch . . . . . . . . . . . . . . . . . . . . . . . 19 7 TODO 21 3
  • 4. 1 Roadmap • Tạo người dùng mới đủ phân quyền chạy sao lưu, trên NAS lẫn Server. • Tạo thư mục nhằm mục đích dùng lưu trữ sao lưu trên NAS. • Cấu hình SSH cho người dùng: Passwordless login with publick key. • ///////Script////để/////sao/////lưu////dữ/////liệu//////‘sql‘:////////////////‘mysqldump‘//////////////////‘asteriskcdrdb‘////////////database. • Chỉnh sửa automatic_backup dựa vào backupengine. • Script để đồng bộ dữ liệu lên NAS: rsync. • Cho vào Crond với crontab. 1.1 Quick&Dirty Guide • Tạo người dùng và thư mục lưu trữ bộ công cụ sao lưu. • Sao chép các công cụ vào thư mục trên dữ nguyên cấu trúc. • Cấp quyền đọc cho người dùng vừa tạo đối với tập n /etc/elastix.conf. • Gọi crontab với tập n lên lịch định sẵn trong $backupdir/bin/cron. 4
  • 5. 2 Chuẩn bị người dùng và thư mục lưu trữ Tại mục này chúng ta sẽ hoàn thành việc khởi tạo người dùng mới cho mục đích chạy tác vụ sao lưu. Thực tế, có thể sử dụng ngay tài khoản root trên hệ thống, nhưng điều này có thể không ện. Tất nhiên cũng có thể sử dụng người dùng đã tồn tại, thì có thể bỏ qua bước này. Tương tự đối với không gian lưu trữ. 2.1 Các thao tác trên NAS 2.1.1 NAS: Tạo người dùng Các bước: 1. Control Panel > User 2. Create > Create User Tại đây thực hiện các lựa chọn về tên, nhóm, phân quyền của người dùng để hoàn thành. Tạo mới người dùng để đồng bộ lên từ Elas x. Người dùng này bắt buộc phải đáp ứng: • Có quyền ghi vào thư mục chỉ định. • Có quyền sử dụng SSH (Terminal & SNMP). Thực tế, có thể sử dụng tài khoản admin hiện có của NAS. Lưu ý: Người dùng thuộc nhóm Administrator có quyền SSH. 2.1.2 NAS: Tạo thư mục Các bước: 1. Control Panel > Shared Folder 5
  • 6. 2. Create hoặc Edit Các tuỳ chọn nên thực hiện: • Ẩn thư mục trên My Network Places. • Ẩn thư mục con và tập n khỏi những người dùng không có quyền. Lưu ý cấp quyền Đọc+Ghi cho người dùng vừa tạo nhằm vào mục đích chạy sao lưu. 2.1.3 Terminal & SNMP Control Panel > Terminal & SNMP: • SSH Enabled. • Specify port or leave it default (22). 2.2 Các thao tác trên Elas x 2.2.1 Login vào server với tài khoản root $ ssh -l root elastixht root@elastixht's password: 2.2.2 Tạo người dùng mới Bước này tạo mới một người dùng, đồng thời gán mật khẩu, tạo thư mục nhà (home) và gán shell mặc định. • Tên (tham số cuối của lệnh dưới): tốt nhất nên trùng với người dùng vừa tạo trên NAS. 6
  • 7. • Mật khẩu không bắt buộc tương tự, nhưng có thể dùng chung mật khẩu, dễ nhớ. [root@elastixht ~]# useradd -c elastix -m -p daylamatkhau samdx [root@elastixht ~]# su samdx [samdx@elastixht ~]$ pwd /home/samdx 2.2.3 Thử đăng nhập vào NAS Thử đăng nhập vào NAS với nguời dùng vừa tạo, sử dụng SSH. Mật khẩu là mật khẩu đã tạo trên NAS. [samdx@centos-01 ~]$ ssh backupht samdx@backupht's password: Last login: Sun Mar 12 17:26:04 2017 from 10.0.0.82 BusyBox v1.16.1 (2015-05-12 15:50:32 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. BackupHT> 7
  • 8. 3 Cấu hình SSH Mục đích: Cài đặt SSH để người dùng có thể đăng nhập sử dụng mã khoá công khai thay vì sử dụng mật khẩu → ện lợi và an toàn hơn, sẽ không cần parse mật khẩu vào cho script rsync dùng để đồng bộ. TODO: • Tạo mới keygen • Cho public key vừa tạo vào file ∼/.ssh/authorized_keys trên NAS tương ứng người dùng. 3.1 Tạo SSH key cho người dùng Sử dụng ssh-keygen như ví dụ dưới: tạo mới một mã khoá RSA. Mục đích sử dụng publick key để đăng nhập vào NAS mà không cần mật khẩu, nên tại dòng Enter passphrase sẽ bỏ trống, đơn giản là bấm Enter để ếp tục. [admin@elastixht ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/admin/.ssh/id_rsa): Created directory '/home/admin/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/admin/.ssh/id_rsa. Your public key has been saved in /home/admin/.ssh/id_rsa.pub. The key fingerprint is: 58:82:5c:ff:65:20:3d:af:1f:87:aa:10:5c:e7:e2:d4 admin@elastixht.htbranch 3.2 Copy public key vào NAS 3.2.1 ssh-copy-id Sử dụng ssh-copy-id theo cú pháp như dưới, mặc định ssh-copy-id sẽ sử dụng file ∼/.ssh/id_rsa.pub. Trường hợp muốn chỉ định public key khác, sử dụng tuỳ chọn -i /path/to/pub_file khi gọi lệnh. 8
  • 9. [samdx@centos-01 ~]$ ssh-copy-id backupht /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys samdx@backupht's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'backupht'" and check to make sure that only the key(s) you wanted were added. [samdx@centos-01 ~]$ 3.2.2 Các cách khác Ngoài ra, có thể sử dụng những cách khác để thực hiện việc trên. Mục đích là để copy nội dung của public key vào file ∼/.ssh/authorized_key của người dùng tương ứng trên SSH server, ở đây là NAS. • Từ WEBUI, dùng Text Editor tạo mới và thêm nội dung cho file authorized_key. • SSH vào NAS với người dùng tương ứng và thêm nội dung cho file. • SSH vào NAS với một tài khoản khác, chuyển đổi người dùng (su)và thực hiện việc thêm nội dung cho file. Hãy lưu ý về phân quyền của thư mục ∼/.ssh và authorized_key, các lỗi đăng nhập có thể phát sinh từ đây. Phân quyền 700 cho ∼/.ssh và 600 cho authorized_key. 3.3 Đăng nhập bằng public key Thử login: 9
  • 10. [samdx@centos-01 ~]$ ssh backupht Last login: Sun Mar 12 17:42:36 2017 from 10.0.0.82 BusyBox v1.16.1 (2015-05-12 15:50:32 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. BackupHT> Như vậy là đã có thể đăng nhập bằng public key, mà không sử dụng trực ếp mật khẩu của người dùng. Điều này tạo thuận ện cho việc gọi rsync về sau. 3.4 A bit tweak for SSHD Chúng ta sẽ làm một vài thay đổi cho SSHD trên Server, áp dụng cho sshd cả trên NAS hay trên Elas x. • Đổi cổng mặc định. • Tắt đăng nhập bằng người dùng root. • Giới hạn người dùng có thể đăng nhập bằng SSH. • Tắt xác thực bằng mật khẩu, bắt buộc dùng Public key. Sử dụng vim hoặc bất kỳ trình soạn thảo nào bạn thuận tay, và sửa file như dưới: [root@elastixht ~]# vim /etc/sshd/sshd_config # Use 8822 instead Port 8822 # Disable root login RootPermitLogin no 10
  • 11. # Allowed users AllowUsers samdx PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys # To disable tunneled clear text passwords, change to no here! PasswordAuthentication no # Change to no to disable s/key passwords ChallengeResponseAuthentication no 11
  • 12. 4 Elas x Auto-backup 4.1 Các công cụ cần thiết Elas x cung cấp công cụ phục vụ cho việc sao lưu dữ liệu, bao gồm từ cơ sở dữ liệu tới các file ghi âm. Công cụ này gọi là backupengine, nằm tại: /usr/share/elastix/privileged/backupengine Công cụ này định nghĩa các thành phần (components) của hệ thống Elas x và thực hiện sao lưu theo chỉ định, các thành phần hoặc mặc định là tất cả. Đồng thời, Elas x cũng cung cấp công cụ mục đích thực hiện tự động sao lưu, được lưu trữ tại: /var/www/backup/automatic_backup.php Đây là thư mục mặc định chứa các tập n sao lưu khi thực hiện sao lưu từ WEBUI. 4.2 Tuỳ chỉnh công cụ Chúng ta phải tuỳ chỉnh một chút các công cụ này cho mục đích sao lưu theo ý. 4.2.1 Tạo thư mục lưu trữ Đầu ên, tạo một thư mục để làm việc. Mục đích lưu trữ các công cụ và các tập n chứa dữ liệu sao lưu. Thư mục lưu trữ có thể đặt bất kỳ đâu, tuỳ ý (trừ /{b,r}oot). Giả sử đặt trong /var. 12
  • 13. Do người dùng mới tạo ra không có quyền ghi (w) trong thư mục /var, nên phải sử dụng quyền root của hệ thống để tạo thư mục, sau đó chuyển quyền qua cho người dùng này. Có thể trực ếp sử dụng tài khoản root hoặc sudo (Trường hợp sudo phải thêm người dùng vào file sudoers, sửa trực ếp hoặc sử dụng visudo). Dưới đây là ví dụ: [root@elastixht bak]# sudo mkdir /var/backup [root@elastixht bak]# sudo chown -R samdx: /var/backup/ [root@elastixht bak]# ls -l !$ drwxr-xr-x 2 samdx samdx 4096 Mar 12 18:34 /var/backup/ [root@elastixht bak]# 4.2.2 Tạo bản sao các công cụ Sao chép các công cụ ở mục 4.1 (Các công cụ cần thiết). [samdx@elastixht /var/backup]$ cp /usr/share/elastix/privileged/backupengine . [samdx@elastixht /var/backup]$ cp /var/www/backup/automatic_backup.php . 4.2.3 Cấp quyền đọc cho tập n elas x.conf Tập n automatic_backup.php gọi tập n backupengine để thực hiện sao lưu. Quá trình sao lưu yêu cầu phải có mật khẩu root của MySQL, vốn được lưu trong file /etc/elastix.conf. // backupengine define('PASSWD_PATH', '/etc/elastix.conf'); Tập n được thiết lập chỉ đọc/ghi đối với người dùng asterisk vốn không nằm trong /etc/group, nên không thể cấp quyền sử dụng chmod. • Trước: 13
  • 14. ls -l /etc/elastix.conf -rw------- 1 asterisk asterisk 71 Aug 14 2016 /etc/elastix.conf Vì vậy, cần cấp quyền đọc cho người dùng trên file này sử dụng công cụ khác (ACL control): $ sudo setfacl -m u:samdx:r /etc/elastix.conf • Sau: ls -l /etc/elastix.conf -rw-r-----+ 1 asterisk asterisk 71 Aug 14 2016 /etc/elastix.conf 4.3 Chỉnh sửa backupengine Do backupengine được giả định sẽ thực thi sử dụng quyền root, nên sau khi thực hiện sao lưu, script cần phân quyền lại thư mục/tập n sao lưu vừa được tạo bởi root cho người dùng asterisk, tại dòng 716–717 của script, như dưới: // Switch tarball file permission to asterisk:asterisk chown($sBackupPath, 'asterisk'); chgrp($sBackupPath, 'asterisk'); Để loại bỏ hành vi này, vì chúng ta sẽ thực thi script này bằng người dùng bình thường (không sudo), đơn giản là ta xoá/comment 2 dòng này, thành: // Switch tarball file permission to asterisk:asterisk //chown($sBackupPath, 'asterisk'); //chgrp($sBackupPath, 'asterisk'); 14
  • 15. $ sed -i '716s+chown+//chown+' backupengine $ sed -i '717s+chgrp+//chgrp+' backupengine 4.4 Chỉnh sửa automa c_backup.php Mặc định, script này sẽ gọi file backupengine trên từ trong /usr/share, và thư mục sao lưu mặc định là /var/www/backup. $sBackupDir = '/var/www/backup'; system('/usr/share/elastix/privileged/backupengine --backup --backupfile '. ); Một vài thay đổi: • Thư mục sao lưu mới là /var/backup/elastix_backup • backupengine đã sửa nằm trong PATH khi đưa vào crond (mục 6 trang 19) sau này, nên dùng đường dẫn tuyệt đối hoặc không là tuỳ chọn. • Chỉ định các thành phần (components) cần sao lưu, thay vì sao lưu tất cả như trên. Vì vậy, automatic_backup.php sau khi đã sửa sẽ như dưới. Các thành phần được định nghĩa trong backupengine. Có thể lựa chọn tất cả ngoại từ as_monitor và as_voicemail vì mục sau (Đồng bộ với RSync trang 15) sẽ thực hiện sao lưu các dữ liệu nặng này. // automatic_backup.php $sBackupDir = '/var/backup/elastix_backup'; system('backupengine --backup --components as_db,as_config_files --backupfile '. ); 15
  • 16. 5 Đồng bộ với RSync Mục này sẽ thực hiện đồng bộ tất cả những dữ liệu cần sao lưu lên server khác, trường hợp này là NAS. Ở mục Tạo thư mục lưu trữ (trang 11) chúng ta đã tạo thư mục dành cho công việc sao lưu, và mục Các công cụ cần thiết (trang 11) chúng ta đã chuẩn bị các công cụ cho việc sao lưu. Ta chuyển thư mục làm việc đến /var/backup/ cùng các công cụ ở mục trước. Các việc ến hành: • Thử rsync với public key đã có. • Lên danh sách các thư mục/item cần sao lưu. • Tạo script cho việc sao lưu. 5.1 Thử rsync Sau khi có thể ssh sử dụng public key (Đăng nhập bằng public key trang 8), thử sử dụng rsync để đảm bảo rằng không lỗi nào phát sinh liên quan đến việc xác thực khi đăng nhập. [samdx@elastixht /var/backup]$ echo -e "## WELCOMEn" > README.md [samdx@elastixht /var/backup]$ rsync -av README.md backupht:/volume1/elastix-bak/ sending incremental file list README.md sent 104 bytes received 31 bytes 90.00 bytes/sec total size is 12 speedup is 0.09 [samdx@elastixht /var/backup]$ ssh backupht Last login: Sun Mar 12 18:23:42 2017 from 10.0.0.12 BusyBox v1.16.1 (2015-05-12 15:50:32 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. BackupHT> ls /volume1/elastix-bak/ README.md 16
  • 17. BackupHT> ls -l /volume1/elastix-bak/ total 8 -rw-rw-r-- 1 samdx users 12 2017-03-12 18:28 README.md 5.2 Các thư mục cần sao lưu Danh sách các thư mục cần sao lưu, sẽ được cho vào một tập n, tạm gọi là included-items.txt. Mục đích sao lưu những thành phần của Elas x, nội dung tập n sẽ tương tự: /var/spool/asterisk/monitor /var/www/backup /var/log/asterisk/cdr-csv /var/backup Trong đó: • /var/spool/asterisk/monitor: Thư mục chứa các bản ghi âm, thường rất nặng. • /var/www/backup: Những tập n sao lưu được lệnh từ WEBGUI sẽ lưu tại đây. • /var/log/asterisk/cdr-csv: Bản ghi danh sách cuộc gọi, từ bảng cdr của asteriskcdrdb. • /var/backup: Thư mục hiện hành, bao gồm các công cụ sao lưu và các bản sao lưu được tạo bởi automatic_backup.php đã nói ở trên. Có thể thêm các thành phần nằm trong thư mục /var/spool/asterisk, ví dụ voicemaill nếu cần. 17
  • 18. 5.3 Kịch bản sao lưu Mục này chúng ta tạo thư mục lưu các kịch bản và các file dành cho việc sao lưu. • Tạo thư mục bin trong /var/backup. • Tạo mới file automatic_sync.sh trong thư mục trên. • Di chuyển các tập n bao gồm automatic_backup.php, backupengine, và included-items.txt. [samdx@elastixht /var/backup]$ mkdỉr bin [samdx@elastixht /var/backup]$ mv *.{php,txt} bin/ [samdx@elastixht /var/backup]$ vim bin/automatic_sync.sh 5.3.1 automa c_sync.sh Tập n kịch bản này thực hiện việc đồng bộ các thư mục chỉ định đến đích là một thư mục trên NAS đã được định trước, đủ quyền đọc/ghi. #!/bin/env bash # THIS VERY SIMPLE AND UGLY SCRIPT # Chỉ định tên người dùng và hostname của NAS SSH_USER=samdx SSH_SERVER=backupht # Các tuỳ chọn cho rsync: # Thư mục lưu trên NAS # Giới hạn băng thông nếu cần (Hà Tĩnh 100MB based) # Các tuỳ chọn khác nếu có # The destination is on the SSH_SERVER not local RSYNC_DEST_DIR="volume1/elastix-bak" RSYNC_BWLIMIT="5120" # 5MB, unit in KBPS RSYNC_OPT="" if [ -n $RSYNC_BWLIMIT ] then RSYNC_OPT="${RSYNC_OPT} --bwlimit=$RSYNC_BWLIMIT" 18
  • 19. fi # Get current datetime CURRENT_TIME=$(date +%Y-%m-%d-%H-%M-%Z) # The path where this script and/or some other file lives on BACK_DIR="/var/backup" # The folder that holds rsync log files SYNC_LOG_DIR="synclog" # Specify the file that contains all the location need to be synced INCLUDE_FILE_NAME="included-items.txt" INCLUDE_FILE=$BACK_DIR/bin/$INCLUDE_FILE_NAME # The sync log file name and path SYNC_LOG_FILE="$BACK_DIR/$SYNC_LOG_DIR/$CURRENT_TIME.log" # Then sync rsync -ar $RSYNC_OPT --files-from=$INCLUDE_FILE / $SSH_USER@$SSH_SERVER:/$RSYNC_DEST_DIR > $SYNC_LOG_FILE 2>&1 19
  • 20. 6 Crontab Sau khi các thành phần khác đã sẵn sàng, ta sử dụng crontab để lên lịch đồng bộ tự động. Xác định thời điểm cần thực hiện sao lưu và đồng bộ, sau đó chỉnh sửa với crontab -e. crontab gọi vi để sửa tập n, :wq để lưu và thoát. PATH=/var/backup/bin:/bin:/usr/bin:/usr/local/bin SHELL=/bin/bash MAILTO="" 0 19 * * * automatic_sync 0 12 * * * automatic_backup Trong đó: • PATH: chỉ định các đường dẫn chứa các tập n thực thi mà đã được chuẩn bị ở trên, bao gồm /var/backup/bin. • SHELL: chỉ định shell sẽ được sử dụng, mặc định crontab sử dụng /bin/sh. • Bên dưới là lịch và lệnh gọi các công cụ tương ứng. Đồng bộ vào lúc 19h mỗi ngày, sao lưu vào lúc 12h mỗi ngày. Các tập n kịch bản đã được đổi tên và loại bỏ phần mở rộng. Chúng ta không cần lo lắng, Linux sẽ nhận dạng dựa trên kiểu MIME và header của tập n. 6.1 Các ví dụ về lập lịch @daily • Mỗi ngày, nh từ lúc thêm vào lịch. 20
  • 21. 0 */2 * * * • Mỗi 2 ếng một, tất cả các ngày. 0 0 * * 6 • Vào lúc 00:00 mỗi thứ 7. 0 12 * */3 SAT • Vào lúc 12:00 thứ 7 mỗi 3 tháng một (theo quý). Đặt Ngày 13 tháng 3 năm 2017 đến 01/04 là thứ 7 kế ếp thực thi. 21
  • 22. 7 TODO Các nội dung khác cần hoàn thiện và bổ sung, như: • Email thông báo mỗi khi sao lưu/đồng bộ xong. Tuỳ loại sao lưu, theo ngày, tuần. • Tìm kiếm, loại bỏ hoặc phân tách các gói sao lưu quá lâu một khoảng thời gian nào đó (60 ngày chẳng hạn), xoá hoặc thông báo cho Admin. • Tương tự đối với các tập n log của kịch bản đồng bộ. 22