文件複製和同步命令小結

    日常運維工作中,不可避免的需要在主機之間進行文件的複製和傳輸。筆者爲了使用方便簡單的總結了一下linux下常用的文件複製和獲取的命令。


1.主機內文件複製命令cp

cp ( copy files and directories )

    cp  [OPTION]  SOURCE  DEST

-a以存檔的模式保存原有文件的所有屬性信息
-p

保存原有文件的權限及時間

-r

遞歸的複製目錄內中的所有文件

mv ( move or rename files )

總結:

1.目標文件不存在:複製並重命名

2.存在爲文件,則覆蓋(有提醒)

3.存在爲目錄,則將文件複製到指定的目錄中

擴展:

which  mv 查詢命令的絕對路徑
rpm -qf /bin/mv查詢命令的安裝包
rpm -qi coreutils查詢軟件包的詳細信息


2.主機間文件複製命令scp

主機間常用的文件複製命令爲scp,其主機間認證的原理是基於ssh協議完成的。

scp ( secure copy -- remote file copy program )

scp  [OPTION]  [user]@host:file  DEST

-F ssh_config指定登錄讀取的配置文件
-l limit

設置速度限制,單位是Kbit/s

-P port

指定ssh端口

-p

保留相關屬性

-r

遞歸複製目錄

    示例如下:

$ scp -l 1000 -P 36000 [email protected]:/jetty/webapps/test.war /home/redhat
test.war                                         100% 2231KB 131.2KB/s   00:17


3.遠程數據獲取命令wget

1.簡單介紹:

1.支持斷點續傳、適用於網絡不太穩定的環境

2.支持FTP/HTTP/HTTPS等協議方式下載

3.支持代理服務器下載

4.設置方便,基於命令行,完全免費

5.通過網絡備份,不支持增量備份。每次都需要將數據重新在網絡上進行傳輸。

2.基本語法:

wget  [OPTIONS]  URL

-x

強制在本地建立與服務器上一樣的目錄

-r按照遞歸的方法下載服務器上所有的目錄與文件
-m製作鏡像站點
-c

使文件下載時支持斷點續傳    -t 0  設置重試次數   -w 30 設置重試時間,單位s

-i

下載多個文件,後面跟上文件名,文件中按行列出ur

-m

--reject=gif   表示忽略gif文件  

--accept=LIST 表示接受該文件


--http-user=USER 

--http-passwd=PAS

-N不要下載已經存在的文件

        3.簡單示例:

# wget -c -t 2 -w 30  ftp://username:[email protected]/aa.txt
# wget -N http://xxx.com/data/aa.txt -o cc.txt -a dd.log &


4.文件同步命令rsync

rsync( a fast , versatile , remote (and local) file-copying tool )

1.特點

1.可以鏡像完整的目錄樹和文件系統。可以鏡像到本地,可以在網絡中進行數據備份。

2.中斷之後可以恢復傳輸,並且易保持文件原有權限。

3.使用"rsync演算法"只傳送源文件和目標文件之間不一致的部分。

4.可執行完整備份和增量備份

5.加密數據傳輸

6.可以基於SSH,rcp等方式也可以直接通過socket連接傳輸文件。 

2.簡單安裝

# tar xf rsync-3.0.4.tar.gz

# cd rsync-3.0.4

# .configure

# make && make install

3.工作模式

1.本地shell模式(shell應用模式)

# rsync -av /etc/pam.d /tmp/pam/

# rsync -av /etc/pam.d/ /tmp/pam/

2.遠程shell模式,其利用SSH執行底層連接和傳輸加密;

# rsync -av /etc/pam.d/ 192.168.21.2:test

3.列表模式,其工作方式與ls相似,即列出源的內容;-nv

# rsync -a 192.168.21.2:test

# rsync -a /etc/pam.d/

4.服務器模式

rsync以守護進程方式運行,接收文件傳輸請求。在使用時,可以使用rsync命令把文件發送給守護進程,也可以向它請求文件。服務器模式非常適合創建中心備份服務器或項目存儲庫。

注意:

1.遠程shell模式和服務器模式的差異在於,後者在源和目標名中使用兩個冒號 (:)

rsync -rl /www/htdocs HOST:/www

rsync -rl /www/htdocs HOST::htdocs

2.rsync命令使用中,如果源參數的末尾有斜槓,就會複製指定目錄的內容,而不復制目錄本身。目標參數末尾的斜槓沒有作用。

如下面的命令會把/mydata/data目錄中的所有文件複製到/backups目錄中:

rsync /mydata/data/  /backups/

4.常用選項

-a以歸檔模式傳輸
-v顯示詳細信息
-z傳輸過程對數據進行壓縮
-n
試運行,會預覽每個文件操作
--progress顯示進度條
--bwlimit設置傳輸速率


5.企業案例:利用RSYNC搭建遠程容災備份系統

5.1.server

    1.添加如下配置文件

# vim /etc/rsyncd.conf
# Section 1: Global settings
    uid = nobody
    gid = nobody
    use chroot = no
    max connections = 5     #限制模塊最大併發連接數,默認值爲0即無限制
    strict modes = yes      #設置是否檢查口令文件的權限,yes則要求密碼文件權限爲root權限
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
     
    # Section 2:Directory to be synced
    [web]                   #定義一個模塊的開始(模塊名稱)
    path = /www/web
    ignore errors = yes
    read only = no          #客戶端可以上傳文件
    write only = no         #客戶端可以下載文件
    hosts allow = 172.16.0.0/16
    hosts deny = *
    list = false            #是否列出客戶請求時的模塊列表。默認爲ture (這裏設置隱藏模塊)
    uid = root
    gid = root
    auth users = xkun       #設置用於連接的用戶名,多個之間通過空格和逗號隔開
    secrets file = /etc/server.pass

    2.添加密碼配置文件

# vim /etc/server.pass
    xkun:redhat
# chmod 600 /etc/server.pass

    3.查看相關幫助信息

# man rsyncd.conf

    4.啓動守護進程

# /usr/local/bin/rsync --daemon
# ps -ef | grep rsync

5.2.client

    備份機上不用做任何設置,只需同步即可。

# vim /etc/client.pass
    redhat
# chmod 600 /etc/client.pass
# /usr/local/bin/rsync -avz --progress
    --delete [email protected]::web /web.net \
    --password-file=/etc/client.pass

以上就是筆者最近工作中經常使用的文件複製和同步命令。錯誤地方,歡迎大家吐槽~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章