Author Topic: install and config rsync in debian and freebsd  (Read 14314 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
install and config rsync in debian and freebsd
« on: มกราคม 24, 2011, 11:35:50 AM »
today I would like to show how to use "rsync" in server and client

อิอิ เริ่มต้นด้วยอังกฤษ หน่อยครับ จะได้ฝึกภาษา ด้วย พอดีวันนี้ นั่งเล่นทำ backup ข้อมูลให้
igetweb.com โดยใช้ rsync มาช่วยครับ ซึ่งตัว rsync จะดีกว่า พวก scp ก็คือว่า ถ้าฝั่ง server
มีการลบไฟล์อะไร หรือเพิ่มไฟล์เข้ามามันก็ทำการ sync ให้เรา ดังใจเรา ปราถนา และทำให้ file นั้นสดๆ ใหม่
อีกด้วยอิอิ

เริ่มต้นฝั่ง server ผมใช้เป็น Debian 4.0 ครับ
แล้วฝั่ง client เป็น Freebsd

เริ่มฝั่ง server โดย
ต้องการ syncronize ไดเรคทอรี่ /home/source ของเครื่อง server1.xxx.com
มายังไดเรคทอรี่ /home/dest ของเครื่อง mirror.xxx.com

ทำที่ทั้งสองเครื่อง server1.xxx.com และ mirror.xxx.com
ติดตั้งและปรับแต่ง rsync
# aptitude install rsync
# vi /etc/default/rsync

RSYNC_ENABLE=true

# dpkg-reconfigure rsync
ทำที่เครื่อง server1.example.com
เพิ่มผู้ใช้ชื่อ test
server1:# useradd -m -s /bin/bash test
( -m คือให้คัดลอกรูปแบบจากไดเรคทอรี่ /etc/skel/
-s คือให้ใช้เชลล์คือ /bin/bash )
ทำที่เครื่อง mirror.xxx.com
ทำการคัดลอก
mirror:# rsync -avz -e ssh test@server1.example.com:/home/source/ /home/dest/
<<<--- ใส่ค่า password ของ test

rsync จะทำการคัดลอกไฟล์ทั้งหมดใน /home/source ที่ test มีสิทธิในการอ่านทั้งหมด
มาที่ /home/dest ของเครื่อง mirror

หมายเหตุ
ตรวจสอบเนื้อที่การใช้ไฟล์ด้วยคำสั่ง
# cd /var/www
# du -c | grep total

Ref site : http://www.thaitux.info/node/94

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: install and config rsync in debian and freebsd
« Reply #1 on: มกราคม 24, 2011, 11:36:13 AM »
สำหรับฝั่ง client
Freebsd ครับ
#cd /usr/ports/net/rsync
#make config ดูค่าหน่อย ผมเลือกตาม default เลยครับ
#make install clean

เสร็จแล้วก็ไปเพิ่ม ใน rc.conf ดังนี้
#vi /etc/rc.conf

#Rsync step by golfreeze
rsyncd_enable="YES"

สั่งให้มัน start rsync

#/usr/local/etc/rc.d/rsync start


จัดการลอง sync ตามนี้ครับ
#/usr/local/bin/rsync -avz -e ssh test@server1.example.com:/home/source/ /home/dest/




ถ้าจะให้ดี กันเวลาเน็ตหลุด ก็ลง screen ไปอีกตัวน่ะครับ แล้วเวลาใช้งาน rsync ก็เข้าผ่าน screen ก่อน

#cd /usr/ports/sysutils/screen
#make install clean

#cp /usr/local/sbin/screen /usr/sbin/.
#screen

แล้วเรียกใช้ rsync ตาม command
#/usr/local/bin/rsync -avz -e ssh test@server1.example.com:/home/source/ /home/dest/

เท่านี้ เน็ตหลุด แต่ rsync ไม่หลุด คร๊าบๆๆๆๆๆ


หรือถ้าจะทำการ rsync ผ่าน port ที่ไม่ใช่ port (22) ก็
#rsync -avpog --delete --exclude '/home/test' -e 'ssh -p22999' root@192.168.0.1:/home/source/  /home/dest/

อิอิ
golfreeze[at]packetlove.com
http://www.weloveunix.com
« Last Edit: กันยายน 17, 2014, 02:41:32 PM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: install and config rsync in debian and freebsd
« Reply #2 on: มกราคม 24, 2011, 11:36:29 AM »
ทำ rsync แบบไม่ต้องถาม password ครับ

ปกติ ถ้าจะใช้ function auto password ต้องเป็นพวก rsh ครับ

ใช้งานได้เลย

#rsync --password-file=pass blah blah

ส่วนถ้าใครใช้ผ่าน ssh มันต้องถาม password อยู่แล้วครับ แม้จะใส่ option --password-file

เราสามารถแก้ปัญหาโดยการ gen key แล้วส่งไปเครื่องปลายทางได้ครับดังนี้

เช่นผมจะใช้คำสั่ง rsync จากเครื่อง B(CentOS)  ให้โยนไฟล์ไป เก็บไว้ที่ เครื่อง A(debian) ทำได้ดังนี้

ทำการ gen key ที่เครื่อง A (Debian)
#ssh-keygen -t rsa
Enter ค่า default ไปครับ สองครั้ง
ระบบจะทำการ gen file 2 file ให้ดังนี้
id_rsa = private key
id_rsa.pub = public key

ทำการ copy file id_rsa.pub ไปที่เครื่อง B ดังนี้
scp ~/.ssh/id_rsa.pub noisy:.ssh/authorized_keys

แล้วทำการ สั่ง rsync อีกรอบ คราวนี้มันก็จะไม่ถาม password แล้วครับ
BCentOS#rsync -avz -e ssh /home/source/ test@serverA.debian.com:/home/destination/
« Last Edit: มกราคม 24, 2015, 08:53:44 PM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: install and config rsync in debian and freebsd
« Reply #3 on: มกราคม 24, 2011, 11:36:46 AM »
ติดตั้ง rsync และ ssh

# aptitude install rsync ssh

สร้างกุญแจให้กับ ssh

# ssh-keygen -t dsa

Enter file in which to save the key (/root/.ssh/id_dsa): <<<--- [ENTER]
Enter passphrase (empty for no passphrase): <<<--- [ENTER]
Enter same passphrase again: <<<--- [ENTER]
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /home/user1/.ssh/id_dsa.pub.
The key fingerprint is:
cd:43:9b:3a:b1:60:01:ae:a2:0e:f8:00:21:8c:d8:f0 root@server2

คัดลอกกุญแจไปยัง server1

# ssh-copy-id -i /root/.ssh/id_dsa.pub root@server1

ต่อเข้า server1 เพื่อบันทึกรหัสผ่าน 1 ครั้ง

# ssh server1 -l root

The authenticity of host 'server1 (192.168.1.1)' can't be established.
RSA key fingerprint is 1a:d1:12:f4:bd:d4:4c:11:93:55:9c:75:a7:eb:7d:ae.
Are you sure you want to continue connecting (yes/no)? <<<--- yes
Warning: Permanently added 'server1,192.168.1.1' (RSA) to the list of known hosts.
root@server1's password: <<<--- ROOT@SERVER1-PASSWORD
Now try logging into the machine, with "ssh 'root@server1'";, and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

#

ต่อเข้าจริงอีก 1 ครั้ง

# ssh root@server1

Last login: Mon Mar 3 21:02:28 2008 from work1.example.com
Linux server1 2.6.18 #1 Mon Mar 3 13:02:29 ICT 2008 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
No mail.
# exit

(***อย่าลืม exit ออกจาก server1 ด้วยนะครับ***)

เสร็จเรื่อง ssh

ต่อเรื่องทำ rsync
สร้างไดเรกทอรีมารองรับไฟล์จาก server1 สมมุติว่าให้ชื่อ /sys2/server1-sysb

# mkdir -p /sys2/server1-sysb

สร้างไฟล์ d.cron-rsync-server1 ใน /usr/local/sbin

# vi /usr/local/sbin/d.cron-rsync-server1

#!/bin/bash
# IF sys2 IS SEPARATE, MOUNT /sys2 FIRST
#mount /sys2

# RSYNC FROM server1:/sys1/sysb TO /sys2/server1-sysb
rsync -aq --delete -e "ssh -i /root/.ssh/id_dsa"\
root@server1.example.com:/sys1/sysb/ /sys2/server1-sysb/

# IF sys2 IS SEPARATE, MOUNT /sys2 FIRST
#umount /sys2

ทำให้รันได้

# chmod 700 /usr/local/sbin/d.cron-rsync-server1

ตั้ง cron ให้รันตอนตี 1

# crontab -e

...
#BACKUP server1:/sys1/sysb TO /sys2/server1-sysb DAILY
20 1 * * * /usr/local/bin/d.cron-rsync-server1

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: install and config rsync in debian and freebsd
« Reply #4 on: มกราคม 24, 2011, 01:53:56 PM »
ทำ rsync แบบไม่ต้องถาม password ครับ

ปกติ ถ้าจะใช้ function auto password ต้องเป็นพวก rsh ครับ

ใช้งานได้เลย

#rsync --password-file=pass blah blah

ส่วนถ้าใครใช้ผ่าน ssh มันต้องถาม password อยู่แล้วครับ แม้จะใส่ option --password-file

เราสามารถแก้ปัญหาโดยการ gen key แล้วส่งไปเครื่องปลายทางได้ครับดังนี้

เช่นผมจะใช้คำสั่ง rsync จากเครื่อง A(debian) user=testroot ให้ไป sync file จาก B(centOS) ทำได้ดังนี้

gen key ที่เครื่อง A (debian)
debianA>ssh-keygen -t rsa
Enter ค่า default ไปครับ สองครั้ง
ระบบจะทำการ gen file 2 file ให้ดังนี้
id_rsa = private key
id_rsa.pub = public key

ทำการ copy file id_rsa.pub ไปที่เครื่อง B ดังนี้
debianA#scp /home/testroot/.ssh/id_rsa.pub serverB@/root/.ssh/authorized_keys

แล้วทำการ สั่ง rsync อีกรอบ คราวนี้มันก็จะไม่ถาม password แล้วครับ
debianA>/usr/local/bin/rsync -avz -e ssh root@serverB:/home/source/ /home/dest/

เวลา sync ข้อมูลมาแล้ว ข้อมูล /source จะไปอยู่ใน /home/dest/source นะครับผม
« Last Edit: เมษายน 11, 2015, 05:51:47 PM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: install and config rsync in debian and freebsd
« Reply #5 on: พฤศจิกายน 04, 2013, 03:09:01 PM »
ถ้าในกรณี เราต้องการทำ rsync โดยที่ไม่การ sync บาง folder ในที่นี้ผมไม่ต้อง folder "tmp/pop" ในเครื่องต้นทาง (119.22.44.55)
ให้ sync มาที่ folder "/home/daily_backup" ในเครื่องปลายทาง 
ก็สามารถทำการรัน command rsync  "--exclude 'folder' " ดังข้างล่างนี้ ที่เครื่อง ปลายทาง ได้ดังนี้ 

#rsync -avpog  --exclude 'tmp/pop' -e ssh test@119.22.44.55:/home  /home/daily_backup/.

และถ้าต้องการที่จะ ลบไฟล์ ที่ไม่มีอยู่ในต้นทาง และให้อัฟเดทไปยังปลายทางด้วย ก็เพิ่ม --delete เข้าไปนะครับ
 #rsync -avpog --delete --exclude 'tmp/pop' -e ssh test@119.22.44.55:/home  /home/daily_backup/.
« Last Edit: ตุลาคม 01, 2017, 11:53:23 AM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: install and config rsync in debian and freebsd
« Reply #6 on: กันยายน 17, 2014, 02:43:05 PM »
เปลียน port rsync เป็น port 22999

หรือถ้าจะทำการ rsync ผ่าน port ที่ไม่ใช่ port (22) ก็
#rsync -avpog --delete --exclude '/home/test' -e 'ssh -p22999' root@192.168.0.1:/home/source/  /home/dest/

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: install and config rsync in debian and freebsd
« Reply #7 on: มิถุนายน 08, 2015, 11:00:33 AM »
ในกรณีจะให้ rsync โดยไม่ถามพาส
โดยทำการ rsync file จากเครื่อง serverA มาที่เครื่อง serverB
โดย สคิปจะเรียกรันจากเครื่อง serverB แล้ว connect ไปเก็บไฟล์ในเครื่อง serverA มาไว้ที่เครื่อง serverB

ให้ตรวจสอบว่า รันคอมมาน rsync ผ่าน user อะไร เช่น user=root หรือ user ธรรมดาทั่วไป
หลังจากนั้นต้องทำการ generate public key ที่เป็น rsa หรือ dsa ที่มีขนาดkey lenght 2048 ครับเพื่อความปลอดภัย ใน user นั้นๆโดย ถ้ารันผ่าน user root

serverB#ssh-keygen -t rsa -b2048
serverB#less /root/.ssh/id_rsa.pub

tranfer public key to account "test1" at serverA kub.
serverA#vi  /home/test1/.ssh/authorized_keys

หลังจากนั้นเทสดูครับ run rsync จาก user=root ในเครื่อง B เพื่อไปเก็บไฟล์ใน เครื่อง server A ให้ใส่พาสครั้งแรกก่อน แล้วลองรันดูอีกรอบนะครับ ก็จะไม่ถามพาสครับผม
serverB#rsync -avpog --delete test1@serverA:/home/source/  /home/dest/.

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: install and config rsync in debian and freebsd
« Reply #8 on: พฤศจิกายน 22, 2019, 06:30:10 AM »
เราสามารถประยุกต์ใช้ ssh command send to remote host ได้นะครับ
ในกรณี เราทำเรื่อง authentication via public key เรียบร้อยแล้ว เราสามารถสั่งให้ เครื่องต้นทาง run ssh command ที่ฝั่ง remote host ได้ดังนี้

ssh -t -p22 testssh2@203.86.x.5 'ls /home'

ก็จะเป็นการ ls /home ที่เครื่อง 203.86.x.5
แล้วเราก็สามารถสั่งให้ไปรัน shell script ในเครื่อง 203.86.x.5 ได้ดังนี้

ssh -t -p22 testssh2@203.86.x.5 '/home/testssh2/testscript.sh'

เท่านี้เองครับผม : )