文章來源: 陶老師運維筆記- 微信公衆號html
本文介紹rsync,scp,wget,curl,nc,ftp,lrzsz等工具使用,尤爲是在文件傳輸方面的應用。 主要內容來自於www.ibm.com/developerwo… 表示感謝。 mysql
rsync 是一款高效的遠程數據備份和鏡像工具,可快速地同步多臺主機間的文件。官網: rsync.samba.org/linux
Rsync服務搭建: CentOS7 FTP及Rsync服務搭建sql
$man rsync
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@][host]:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
$rsync -avzP data1user@192.168.1.2::data1 ~/data1
保持傳輸原有文件權限,用戶,用戶組,時間,遞歸的把data1模塊數據複製到用戶家目錄的data1目錄裏.
參數 a的意思就是 保留文件原有權限,用戶,用戶組,時間且遞歸的copy包括連接文件。
$rsync --compress --recursive --times --perms --owner --group --links --exclude=smarty/templates_c/ --timeout=30 [path] [user]@[ip]:[path]
複製代碼
參數說明:windows
選項 | 描述 |
---|---|
-a, --archive | 歸檔模式,保持全部文件屬性,等同於 -rlptgoD |
-v, --verbose | 詳細信息輸出 |
-r, --recursive | 對子目錄進行遞歸處理 |
-R, --relative | 使用相對路徑信息 |
-b, --backup | 建立備份 |
-z, --compress | 對備份的文件在傳輸時進行壓縮處理 |
--delete | 用於同步目錄,從 DEST 中將 SRC 不存在的文件進行刪除 |
--progress | 顯示備份過程 |
#設置密碼:
$export RSYNC_PASSWORD=ops123456;
#限速
$rsync macdown071.zip ops@rsync.tao-ops.com::software/ --bwlimit=50000 -arv
$rsync --password-file=/etc/rsyncd.secrets.passfile ops@ip::software . --bwlimit=50000 -arv
#備份
$rsync -avzP data1user@192.168.1.2::data1 ~/data1
保持傳輸原有文件權限,用戶,用戶組,時間,遞歸的把data1模塊數據複製到用戶家的data1目錄裏。
#刪除--delete
rsync -avzP --delete data1user@192.168.1.2::data1 ~/data1
#保持data1模塊和用戶家目錄模塊內容徹底一致,加上參數 --delete,這樣會刪除在~/data1目錄裏可是不在data1
複製代碼
scp 命令在網絡上的主機之間拷貝文件,它是安全拷貝(secure copy)的縮寫。 scp 命令使用 ssh 來傳輸數據,並使用與 ssh 相同的認證模式,提供一樣的安全保障。瀏覽器
$man scp
$scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
複製代碼
#示例:
$scp ops@rsync.tao-ops.com:/home/ops/foo.txt ~/Downloads/
$scp -r -P 4588 ops@rsync.tao-ops.com:/tmp/foo.txt /root/
Copy 本地文件 /etc/eva.log, 到遠程機器 sysB, 用戶 user 的家目錄下
$scp /etc/eva.log user@sysB:/home/user
copy 遠程機器 sysB 上的文件 /home/uesr/eva.log, 到本地的 /etc 目錄下 , 並保持文件屬性不變
$scp -p user@sysB:/home/uesr/eva.log /etc
copy sysB 上的目錄 /home/user, 到本地 /home/user/tmp, <new dir,/home/user/tmp/user>
$scp -r user@sysB:/home/user /home/user/tmp
複製代碼
wget 是一個經由 GPL 許可的可從網絡上自動獲取文件的自由軟件包。它是一個非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 協議,支持代理服務器以及斷點續傳功能。 wget 可實現遞歸下載,徹底重建原始站點的目錄結構,實現遠程網站的鏡像。在遞歸下載時,wget 將頁面中的超級連接轉換成指向本地文件,方便離線瀏覽。緩存
#http://www.gnu.org/software/wget/manual/wget.html
$man wget
wget [options] [URL-list]
複製代碼
wget 幫助手冊: www.gnu.org/software/wg… 參數說明:安全
選項 | 描述 |
---|---|
-r | 遞歸下載服務器上全部的目錄和文件。由 -l 選項來指定遞歸深度。 |
-b | 後臺下載 |
-m | 製做站點鏡像 |
-c | 指定斷點續傳功能。該功能要求服務器支持斷點續傳。 |
-I | 指定下載目錄列表,可實現批量下載 |
-A/-R | 指定接受/拒絕下載列表,實現選擇性地下載 |
--proxy=on/off | 指定是否利用代理服務器進行下載 |
-t, --tries=NUMBER | 最大嘗試連接次數 (0 表示無限制,默認爲 20 次 ) |
-nc, --no-clobber | 不覆蓋已存在的文件 |
-N, --timestamping | 只下載比本地新的文件 |
-nd --no-directories | 不進行目錄結構建立 |
-x, --force-directories | 強制建立目錄結構 |
-nH, --no-host-directories | 不繼承主機目錄結構 |
-P, --directory-prefix=PREFIX | 設置目錄前綴 |
#下載文件
$wget https://dldir1.qq.com/weixin/mac/WeChatMac.dmg -O WeChatMac.dmg
#有密碼
$wget -P /data1 -c --http-user='xxx' --http-passwd='xxx' http://ip:80/scripts/install.sh
複製代碼
#下載ftp文件
$wget -P /tmp/ ftp://ftp.tao-ops.com:21/pub/README.md --ftp-user=ftpuser --ftp-password=ftppwd
複製代碼
#遞歸下載 http://www.ibm.com.cn 站點的信息下載全部顯示完整網頁因此須要的文件,如圖片等。
#在下載不進行上層目錄搜索並將絕對連接轉換爲相對連接。
$wget -r -p -np -k http://www.ibm.com.cn
#本地硬盤創建 http://www.ibm.com.cn 的鏡像,遞歸深度爲 4,重試次數爲無窮
$wget -m -l4 -t0 http://www.ibm.com.cn
#使用代理進行下載,並實現斷點續傳。
$wget -Y on -c http://www.ibm.com.cn
複製代碼
curl,它是對 libcurl 庫的一個命令行工具包裝。 curl 使用 URL 的語法來傳輸文件,它支持 FTP, FTPS, HTTP, HTTPS, TFTP, SFTP, TELNET 等多種協議。bash
$man curl
curl [options] [URL...]
複製代碼
curl http://www.baidu.com
curl -o 1.html http://www.baidu.com
curl -O http://www.baidu.com/index.html
複製代碼
#無密碼
$curl ftp://ftp.gnu.org/README
#有密碼
$curl ftp://name:passwd@machine.domain:port/full/path/to/file -O
$curl -u name:passwd ftp://machine.domain:port/full/path/to/file -o xxx.file
複製代碼
curl -x my-proxy:port ftp://ftp.somesite.com/README
複製代碼
curl 適合用來進行自動的文件傳輸或操做序列,它是一個很好的模擬用戶在網頁瀏覽器上的行爲的工具。尤爲當須要在程序中調用時,libcurl 是個很好的選擇。服務器
nc命名netcat,能夠鏈接和重定向Sockets。nc命令功能很是多,它能夠打開TCP鏈接,發送UDP包,監聽TCP/UDP端口,進行端口掃描等等。 nc在兩機器間傳輸文件速度很是快,推薦使用。
$man nc
ncat - Concatenate and redirect sockets
#用法
$ncat [OPTIONS...] [hostname] [port]
nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通訊端口>]
[-s<來源位址>][-v...][-w<超時秒數>][主機名稱][通訊端口...]
複製代碼
基本參數
選項 | 描述 |
---|---|
-4 | 僅使用IPv4 |
-6 | 僅使用IPv6 |
-c,--sh-exec [command] | 執行給定的命令,同/bin/sh |
-e,--exec [command] | 執行給定的命令 |
-m,--max-conns [n] | 設置同時鏈接的最大數 |
-d,--delay [time] | 設置讀/寫的等待時間 |
-o,--output [filename] | 將會話的數據保存爲文件 |
-i,--idle-timeout [time] | 讀/寫空閒超時時間 |
-p,--source-port port | 指定本機使用的通訊端口 |
-s,--source addr | 指定遠程通訊的主機地址 |
-l,--listen | 監聽傳入的鏈接信息 |
-k,--keep-open | 在監聽模式中接收多個鏈接信息 |
-n,--nodns | 直接使用IP地址,不解析域名 |
-t,--telnet | 響應telnet請求 |
-u,--udp | 使用UDP替換默認的TCP |
-v,--verbose | 顯示詳細的輸出信息 |
-w,--wait [time] | 設置鏈接超時時間,單位爲秒 |
-z | 創建鏈接後立刻斷開,不發送和接收任何數據即Zero-I/O模式,僅用於測試鏈接狀 |
目標機(接收機器):
nc -l 1234 >mysql-bin.000001
#源機器: 文件的發送端,啓動監聽端口並準備好相應的文件
nc 接收機ip 1234 < mysql-bin.000001
複製代碼
2)傳輸文件夾
目標機(接收機器):192.168.0.3
nc -l 1234 | tar xzvf - >mysql3306
源機器(發送機器):
tar czvf - mysql3306 | nc 192.168.0.3 1234
複製代碼
掃描本機端口20-22
$nc -z -v -n -w 2 127.0.0.1 20-22
nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 21 (tcp) failed: Connection refused
Connection to 127.0.0.1 22 port [tcp/*] succeeded!
#mysql
$nc -z -vv 192.110.103.41 3306
Connection to 192.110.103.41 3306 port [tcp/mysql] succeeded!
#zk
$echo 'ruok' | nc 127.0.0.1 2181
#memcache
$nc -z -vv 127.0.0.1 11211
Connection to 127.0.0.1 11211 port [tcp/memcache] succeeded!
複製代碼
yum install memcached
#啓動
memcached -d -p 11211 -m 256
#set key flags exptime bytes [noreply]
$nc -z -vv 127.0.0.1 11211
1)存儲數據:printf "set mykey 0 1000 6\r\n123456\r\n" |nc 127.0.0.1 11211
2)獲取數據:printf "get mykey\r\n" |nc 127.0.0.1 11211
3)刪除數據:printf "delete mykey\r\n" |nc 127.0.0.1 11211
4)查看狀態:printf "stats\r\n" |nc 127.0.0.1 11211
5)模擬top命令查看狀態:watch "echo stats" |nc 127.0.0.1 11211
6)清空緩存:printf "flush_all\r\n" |nc 127.0.0.1 11211 (當心操做,清空了緩存就沒了)
複製代碼
在192.168.2.34上: nc -l 1234
在192.168.2.33上: nc 192.168.2.34 1234
這樣,雙方就能夠相互交流了。使用ctrl+C(或D)退出。
複製代碼
ftp 命令使用文件傳輸協議(File Transfer Protocol, FTP)在本地主機和遠程主機之間或者在兩個遠程主機之間進行文件傳輸。FTP 協議容許數據在不一樣文件系統的主機之間傳輸。
$ ftp 主機名 /IP #若是沒有指定主機名,ftp 將給出提示符,等待用戶輸入命令
#ftp命令 描述
ls 列出遠程機的當前目錄
cd 在遠程機上改變工做目錄
lcd 在本地機上改變工做目錄
ascii 設置文件傳輸方式爲 ASCII 模式
binary 設置文件傳輸方式爲二進制模式
close 終止當前的 ftp 會話
get (mget) 從遠程機傳送指定文件到本地機
put (mput) 從本地機傳送指定文件到遠程機
open 鏈接遠程 ftp 站點
quit 斷開與遠程機的鏈接並退出 ftp
? 顯示本地幫助信息
! 轉到 Shell 中
prompt 1 關閉交互模式
複製代碼
#ftp get (mget) 從遠程機傳送指定文件到本地機
#wget
$wget -P /tmp/ ftp://ftp.tao-ops.com:21/pub/README.md --ftp-user=user --ftp-password=ftppwd
#curl有密碼
$curl ftp://name:passwd@machine.domain:port/full/path/to/file -O
$curl -u name:passwd ftp://machine.domain:port/full/path/to/file -o xxx.file
複製代碼
lrzsz是一個unix通訊套件提供的X,Y,和ZModem文件傳輸協議,能夠用在windows與linux 系統之間的文件傳輸,體積小速度快。
#安裝
$yum install lrzsz
$man rz
$man sz
複製代碼
若終端是SecureCRT,打開SecureCRT軟件 -> Options -> session options -> X/Y/Zmodem 下能夠設置上傳和下載的目錄;
#下載 (從客戶端上傳文件到linux服務端)
$rz
#上傳(發送文件到客戶端)
$sz /etc/passwd
複製代碼
文件傳輸方法基於其自身的特色與優點均有其典型的適用場景: