##scp -- secure copy (remote file copy program) scp = cp + ssh,經過ssh協議將與遠程主機互相拷貝文件。shell
使用方法
scp 選項 file_source file_target
對於遠程路徑,要使用user@remote_ip:file的形式(固然若是你在遠程主機上使用了ssh key能夠省略)例如:
scp /home/wgjak47/A.md test@192.168.199.15:/tmp/B.md
安全
關於選項 scp的複製選項比cp要少一些,只有遞歸複製和保留原屬性,例如你但願複製目錄並且保留源文件的權限,時間等信息,可使用-r和-p選項: scp -rp /home/wgjak47/secret test@192.168.199.15:/home/test/backup
scp同時也有一部分與ssh的相同的選項。例如能夠指定遠程主機的ssh端口: scp -rp -P 3307 /home/wgjak47/secret test@192.168.199.15:/home/test/backup
服務器
關於速度,因爲使用了加密,相比tftp等簡單文件傳輸協議要慢,可是並不嚴重。ssh
##rsync remote synchronize,即遠程同步。rsync主要用來進行鏡像,在同步文件時能夠保持原來文件的權限、時間、軟硬連接等附加信息。socket
###rsync服務端tcp
sudo apt-get install rsync
2.在rsync的服務端須要配置rsync服務,涉及到如下三個文件:ui
cp /usr/share/doc/rsync/example/rsyncd.conf /etc/
# sample rsyncd.conf configuration filethis
# GLOBAL OPTIONS加密
#motd file=/etc/motd
#log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
# The init.d script does its own pid file handling,
# so omit the "pid file" line completely in that case.
# pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=日誌# MODULE OPTIONS
[ftp] #認證的模塊名,client使用時指定
comment = public archive
path = /var/www/pub # 須要同步的目錄 use chroot = yes # 同步前先chroot到同步目錄,安全考慮。 # max connections=10
lock file = /var/lock/rsyncd
# the default for read only is yes...
read only = yes
list = yes
uid = nobody #傳輸文件使用的用戶 gid = nogroup #傳輸文件使用的組別,必定要確認這的用戶和用戶組可以讀取path下的文件。 # exclude =
# exclude from =
# include =
# include from =
# auth users = #認證的用戶名,若是沒有這行,則代表是匿名 # secrets file = /etc/rsyncd.secrets ## 認證密碼文件 strict modes = yes
# hosts allow = #容許訪問的hosts # hosts deny = #進制訪問的hosts,與前面2選1 ignore errors = no #忽略一些 ignore nonreadable = yes
transfer logging = no # 記錄傳輸日誌
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
timeout = 600 #超時 refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz #傳輸時不壓縮以節省時間。
更多詳細選項能夠參閱man page:man rsyncd.conf
wgjak47:thisispwd
文件權限要設定爲600,防止密碼泄露。
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use my rsync services!
++++++++++++++++++++++++++++++++++++++++++++++
編輯/etc/defalult/rsync,修改RSYNC_ENABLE=true
打通防火牆端口:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
啓用rsync服務(update-rc.d,開機自動啓動)
update-rc.d rsync start 20 2 3 4 5
啓動rsync服務
service rsync start
###客戶端 客戶端可使用rsync命令來從服務器同步文件。 rsync的命令格式能夠爲:
選項:
-r 是遞歸 -l 是連接文件,意思是拷貝連接文件;-p 表示保持文件原有權限;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 至關於塊設備文件;
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,等於-rlptgoD -z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等信息,和-P有點關係,本身試試。能夠看文檔;
-e ssh的參數創建起加密的鏈接。
-u只進行更新,防止本地新文件被重寫,注意二者機器的時鐘的同時
--progress是指顯示出詳細的進度狀況
--delete是指若是服務器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致
--password-file=/password/path/file來指定密碼文件,這樣就能夠在腳本中使用而無需交互式地輸入驗證密碼了,這裏須要注意的是這份密碼文件權限屬性要設得只有屬主可讀。
樣例:
rsync --list-only wgjak47@192.168.145.5::
列出可用模塊
rsync --list-sonly wgjak47@192.168.145.5::ftp
查看ftp下的文件
rsync -avzP wgjak47@192.168.145.5::ftp tmp
用root用戶登陸到服務器上,把test數據,同步到本地當前目錄test上。固然本地的目錄是能夠你本身定義的。若是當你在客戶端上當前操做的目錄下沒有test這個目錄時,系統會自動爲你建立一個;當存在test這個目錄中,你要注意 它的寫權限。若是加上了--delete選項,同步過程當中會將遠程主機已經刪除,可是本地仍然存在的文件刪除。