Linux基礎(day37)

10.28 rsync工具介紹

Linux文件同步工具-rsync

  • rsync -av /etc/passwd /tmp/1.txt
  • rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt
  • rsync格式
  • rsync [OPTION] … SRC DEST
  • rsync [OPTION] … SRC [user@]host:DEST
  • rsync [OPTION] … [user@]host:SRC DEST
  • rsync [OPTION] … SRC [user@]host::DEST
  • rsync [OPTION] … [user@]host::SRC DEST

rsync工具介紹

  • 安裝rsync包——>yum install -y rsync
  • rsync命令,它是一個遠程數據同步工具,可經過LAN/WAN快速同步多臺主機間的文件。
    • 好比,有A、B目錄,想要把A目錄裏面的數據拷貝到B目錄下去,而且A目錄中數據一直在更新
    • 需求,每小時拷貝一次
    • 實現,可以使用rsync命令
      • 優點:實現增量的拷貝,並支持遠程
  • rsync -av /etc/passwd /tmp/1.txt //把/etc/passwd文件拷貝到/tmp下並更名爲1.txt
    • -a參數中包含了不少選項,後面會詳細介紹
    • -v查看到可視化過程
      • 查看到發送了多少個字節
      • 多少字節每秒
      • 文件一共有多大
      • 速度是多少

rsync命令

[root@hanfeng ~]# rsync -av /etc/passwd /tmp/1.txt    //把/etc/passwd文件拷貝到/tmp下並更名爲1.txt 
sending incremental file list
passwd

sent 957 bytes  received 31 bytes  1976.00 bytes/sec
total size is 883  speedup is 0.89
[root@hanfeng ~]#

rsync命令,遠程命令同步/拷貝

-好比,拷貝到對方機器root用戶下 - 而後在root後加IP,並用 : 冒號分開,再跟文件的根路徑mysql

- 並輸入root用戶的密碼
  • rsync -av /etc/passwd root@192.168.202.130:/tmp/1.txt //將/etc/passwd文件拷貝到root用戶192.168.202.130IP地址下,並用 : 冒號分開,再跟文件的根路徑
[root@hanfeng ~]# rsync -av /etc/passwd root@192.168.202.130:/tmp/1.txt    //將/etc/passwd文件拷貝到root用戶192.168.202.130IP地址下,並用 : 冒號分開,再跟文件的根路徑
root@192.168.202.130's password:         //這裏寫用戶的密碼
sending incremental file list

sent 31 bytes  received 12 bytes  0.43 bytes/sec
total size is 883  speedup is 20.53
[root@hanfeng ~]#

rsync格式

  • rsync [OPTION] … SRC DEST
    • [OPTION]表示它的選項
    • SRC表示源目錄
    • DEST表示目標目錄,或者是目標文件
  • rsync [OPTION] … SRC [user@]host:DEST //拷貝到遠程的服務器上去
    • user@可省略,那就會默認當前終端的用戶
  • rsync [OPTION] … [user@]host:SRC DEST //先寫遠程的機器/目錄,而後拷貝到本地的目錄下
  • rsync [OPTION] … SRC [user@]host::DEST //這裏的兩個冒號,能夠是目標,能夠是源
  • rsync [OPTION] … [user@]host::SRC DEST

10.29/10.30 rsync經常使用選項

Linux文件同步工具-rsync

  • rsync經常使用選項
    • -a 包含-rtplgoD參數選項
    • -r 同步目錄時要加上,相似cp時的-r選項
    • -v 同步時顯示一些信息,讓咱們知道同步的過程
    • -l 保留軟鏈接
      • 如果拷貝的原目錄裏面有一個軟連接文件,那這個軟連接文件指向到了另一個目錄下
      • 在加上-l,它會把軟連接文件自己拷貝到目標目錄裏面去
    • -L 加上該選項後,同步軟連接時會把源文件給同步
    • -p 保持文件的權限屬性
    • -o 保持文件的屬主
    • -g 保持文件的屬組
    • -D 保持設備文件信息
      • /dev/sdb1 這樣的設備文件有它的特殊性,若是不加-D 可能拷貝過去就是一個很是普通的文件,不能當設備來用
    • -t 保持文件的時間屬性
    • --delete 刪除DEST中SRC沒有的文件
    • --exclude 過濾指定文件,如--exclude 「logs」會把文件名包含logs的文件或者目錄過濾掉,不一樣步
    • -P 顯示同步過程,好比速率,比-v更加詳細
    • -u 加上該選項後,若是DEST中的文件比SRC新,則不一樣步
      • update
    • -z 傳輸時壓縮

rsync命令,同步目錄

  • rsync -av /root/111 /tmp/111_dest //同步一個目錄
    • 在同步目錄的時候,在目錄的最後面加一個斜槓/
[root@hf-01 ~]# ls 111
a.txt  haha  hanfeng
[root@hf-01 ~]# ls /tmp/
[root@hf-01 ~]# rsync -av /root/111/ /tmp/111_dest/    //同步一個目錄
sending incremental file list
created directory /tmp/111_dest
./
a.txt
haha/
hanfeng/

sent 256312 bytes  received 42 bytes  512708.00 bytes/sec
total size is 256144  speedup is 1.00
[root@hf-01 ~]#
  • 在加入參數 -L 後,會把參數 -l 的含義給覆蓋掉
    • -L會把軟連接所指向的源文件給拷貝過去
[root@hf-01 ~]# rsync -avL /root/111/ /tmp/111_dest/
sending incremental file list

sent 88 bytes  received 14 bytes  204.00 bytes/sec
total size is 256144  speedup is 2511.22
[root@hf-01 ~]#

rsync命令,刪除目標中源文件中沒有的內容

  • rsync -avL --delete /root/111/ /tmp/111_dest/
    • --delete會把多餘的文件除去
[root@hf-01 ~]# ls 111/
a.txt  haha  hanfeng
[root@hf-01 ~]# ls /tmp/111_dest/
a.txt  haha  hanfeng
[root@hf-01 ~]# touch /tmp/111_dest/new.txt
[root@hf-01 ~]# rsync -avL --delete /root/111/ /tmp/111_dest/
sending incremental file list
./
deleting new.txt

sent 91 bytes  received 17 bytes  216.00 bytes/sec
total size is 256144  speedup is 2371.70
[root@hf-01 ~]# ls /tmp/111_dest/
a.txt  haha  hanfeng
[root@hf-01 ~]#

rsync命令,過濾全部txt文件

[root@hf-01 ~]# rsync -avL --exclude "*.txt" /root/111/ /tmp/111_dest/
sending incremental file list
./
2.txt.swp
4913
haha/
hanfeng/

sent 184 bytes  received 61 bytes  490.00 bytes/sec
total size is 0  speedup is 0.00
[root@hf-01 ~]#
  • 可屢次過濾文件
[root@hf-01 ~]# !rm
rm -rf /tmp/111_dest/*
[root@hf-01 ~]# rsync -avL --exclude "*.txt" --exclude="2*" /root/111/ /tmp/111_dest/
sending incremental file list
./
4913
haha/
hanfeng/

sent 131 bytes  received 42 bytes  346.00 bytes/sec
total size is 0  speedup is 0.00
[root@hf-01 ~]#
  • 在添加文件後,再次同步,會只同步裏面不相同的文件,而相同的文件則不會再次同步
[root@hf-01 ~]# cd 111
[root@hf-01 111]# touch 6.dest 123
[root@hf-01 111]# rsync -avL --exclude "*.txt" --exclude="2*" /root/111/ /tmp/111_dest/
sending incremental file list
./
123
6.dest

sent 187 bytes  received 55 bytes  484.00 bytes/sec
total size is 0  speedup is 0.00
[root@hf-01 111]#

rsync命令,參數-P

  • rsync -avP /root/111/ /tmp/111_dest/
    • 在傳輸過程當中,會告訴你傳輸了多少,傳輸的速度是多少
[root@hf-01 ~]# !rm
rm -rf /tmp/111_dest/*
[root@hf-01 ~]# rsync -avP /root/111/ /tmp/111_dest/
sending incremental file list
./
123
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=6/8)
2.txt.swp
           0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=5/8)
4913
           0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=4/8)
6.dest
           0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=3/8)
a.txt
      256144 100%   53.26MB/s    0:00:00 (xfer#5, to-check=2/8)
haha/
hanfeng/

sent 256522 bytes  received 118 bytes  513280.00 bytes/sec
total size is 256144  speedup is 1.00
[root@hf-01 ~]#

rsync命令,參數-u

[root@hf-01 ~]# cd /tmp/111_dest/
[root@hf-01 111_dest]# ls
123  2.txt.swp  4913  6.dest  a.txt  haha  hanfeng
[root@hf-01 111_dest]# vim 4913
在4913中添加內容

[root@hf-01 111_dest]# rsync -avPu /root/111/ /tmp/111_dest/
sending incremental file list
./

sent 145 bytes  received 17 bytes  324.00 bytes/sec
total size is 256144  speedup is 1581.14
[root@hf-01 111_dest]# cat 4913
dsgsdfascs
dsafszcdrw
etfbcgrhc
cbcvbtyegvdgdh
gxdgdfhch
[root@hf-01 111_dest]# cat /root/111/4913
[root@hf-01 111_dest]#

rsync命令,參數-z

  • 在遠程傳輸不少文件的時候,加上-z 參數,能夠節省帶寬,增長速度的
[root@hf-01 111_dest]# rsync -avPz /root/111/ /tmp/111_dest/
sending incremental file list
4913
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=4/8)

sent 178 bytes  received 33 bytes  422.00 bytes/sec
total size is 256144  speedup is 1213.95
[root@hf-01 111_dest]#

10.31 rsync經過ssh同步

Linux文件同步工具-rsync

  • rsync經過ssh方式同步
  • rsync -av test1/ 192.168.133.132:/tmp/test2/
  • rsync -av -e "ssh -p 22" test1/ 192.168.133.132:/tmp/test2/
  • rsync 經過服務的方式同步
  • 要編輯配置文件/etc/rsyncd.conf
  • 啓動服務rsync --daemon
  • 格式:rsync -av test1/ 192.168.133.130::module/dir/

rsync命令,將文件傳輸到另外一臺虛擬機

  1. 在終端打開兩個不一樣ip的虛擬機,而且兩個虛擬機是能夠互通ping通的
在hf的虛擬機中,ping另外一臺虛擬機
[root@hf-01 ~]# ping 192.168.74.130
PING 192.168.74.130 (192.168.74.130) 56(84) bytes of data.
64 bytes from 192.168.74.130: icmp_seq=1 ttl=64 time=1.42 ms
64 bytes from 192.168.74.130: icmp_seq=2 ttl=64 time=0.873 ms
^C
--- 192.168.74.130 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1004ms
rtt min/avg/max/mdev = 0.873/1.147/1.422/0.276 ms
[root@hf-01 ~]# 


在hf-02的虛擬機上,ping第一臺虛擬機
[root@hf-02 ~]# ping 192.168.74.129
PING 192.168.74.129 (192.168.74.129) 56(84) bytes of data.
64 bytes from 192.168.74.129: icmp_seq=1 ttl=64 time=1.05 ms
64 bytes from 192.168.74.129: icmp_seq=2 ttl=64 time=0.725 ms
^C
--- 192.168.74.129 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.725/0.891/1.058/0.169 ms
[root@hf-02 ~]#
  1. 在hf的終端虛擬機上,將文件傳輸到hf-02的虛擬機上
    • 前提:在兩個虛擬機上都安裝rsync包——>yum install -y rsync
在hf的虛擬上,傳文件到hf-02的虛擬機上
[root@hf-01 ~]# rsync -av /etc/passwd 192.168.74.130:/tmp/hanfeng.txt
root@192.168.74.130's password:          //輸入192.168.74.130虛擬機的密碼,就是hf-02的密碼
sending incremental file list
passwd

sent 1100 bytes  received 31 bytes  323.14 bytes/sec
total size is 1026  speedup is 0.91
[root@hf-01 ~]# 


在hf-02虛擬機上查看
[root@hf-02 ~]# ls /tmp/hanfeng.txt
/tmp/hanfeng.txt
[root@hf-02 ~]# cat !$
cat /tmp/hanfeng.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
[root@hf-02 ~]#

rsync命令,將另外一臺虛擬機文件傳輸到本機上

  • 將hf-02機器中的文件傳輸到本機上
[root@hf-01 ~]# rsync -avP 192.168.74.130:/tmp/hanfeng.txt /tmp/12345.txt
root@192.168.74.130's password:        
receiving incremental file list
hanfeng.txt
        1026 100% 1001.95kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 30 bytes  received 1110 bytes  78.62 bytes/sec
total size is 1026  speedup is 0.90
[root@hf-01 ~]#

rsync命令,參數-e 指定端口傳輸文件

  • rsync -avP -e "ssh -p 22" /etc/passwd 192.168.74.130:/tmp/hanfeng.txt //指定對方的22端口,就能夠鏈接對面的22端口
[root@hf-01 ~]# rsync -avP -e "ssh -p 22" /etc/passwd 192.168.74.130:/tmp/hanfeng.txt
root@192.168.74.130's password: 
sending incremental file list

sent 31 bytes  received 12 bytes  7.82 bytes/sec
total size is 1026  speedup is 23.86
[root@hf-01 ~]#

ssh命令

  • ssh -p 22 192.168.74.130 //鏈接ip爲192.168.74.130的虛擬機
    • 輸入exit退出
[root@hf-01 ~]# ssh -p 22 192.168.74.130
root@192.168.74.130's password: 
Last login: Wed Dec  6 05:14:27 2017 from 192.168.74.1
[root@hf-02 ~]# exit
登出
Connection to 192.168.74.130 closed.
[root@hf-01 ~]#
相關文章
相關標籤/搜索