閱讀909 返回首頁    go 技術社區[雲棲]


雲服務器 ECS 配置:雲服務器ECS之間數據傳輸的實現方式




簡介

在信息化高速發展的今天,服務器每天都會與其它單機交換大量文件數據,文件傳輸對大家來說是家常便飯。因此,其重要性就不言而喻了。文件傳輸方式各有不同,選擇一款合適自己的文件傳輸工具,在工作中能起到事半功倍的效果。節省資源、方便傳輸、提升工作效率、加密保護等等。因此,很多文件傳輸工具應運而生,例如:NC、FTP、SCP、NFS、SAMBA、RSYNC/SERVERSYNC等等,每種方式都有自己的特點。本文將首先簡單介紹一下文件傳輸的基本原理,然後,詳細介紹類unix/linux、windows平台上常用文件傳輸方式,並針對它們各自的特點進行比較,讓讀者對文件傳輸方式有比較詳盡地了解,從而能夠根據不同的需要選擇合適的文件傳輸方式。

文件傳輸原理

文件傳輸是信息傳輸的一種形式,它是在數據源和數據宿之間傳送文件數據的過程,也稱文件數據通信。操作係統把文件數據提取到內存中做暫存,再複製到目的地,加密就是在文件外加了一個殼,文件本身還是一個整體,複製隻是把這個整體轉移到其它地方,不需要解密,隻有打開壓縮包時才需解密。一個大文件作為一個數據整體,是不可能瞬間從一台主機轉移到其它的主機,傳輸是一個持續的過程,但不是把文件分割了,因此,如果在傳輸的過程中意外中斷,目標路徑中是不會有傳輸的文件,另外,如果傳輸的是多個文件,那麼,這些文件是按順序分別傳輸,如果中間中斷,則正在傳輸的文件會傳輸失敗,但是,之前已經傳完的文件傳輸成功(如果傳輸的是文件壓縮包,那麼,不管裏麵有幾個文件,它本身被視為一個文件)。

通常我們看到的 NC、FTP、SCP、NFS 等等,都是可以用來傳輸文件數據的工具,下麵我們將詳細介紹主要文件傳輸工具的特點以及用法。

NETCAT

在網絡工具中有“瑞士軍刀”的美譽,它功能強大,作為網絡工具的同時,它傳輸文件的能力也不容小覷。

常用參數:


image

簡單用法舉例

1.端口掃描21-24(以IP192.168.2.34為例)。

nc -v -w 2 192.168.2.34 -z 21-24

nc: connect to 192.168.2.34 port 21 (tcp) failed: Connection refused

Connection to 192.168.2.34 22 port [tcp/ssh] succeeded!

nc: connect to 192.168.2.34 port 23 (tcp) failed: Connection refused

nc: connect to 192.168.2.34 port 24 (tcp) failed: Connection refused

2.從192.168.2.33拷貝文件到192.168.2.34。

在192.168.2.34上:

nc -l 1234 > test.txt

在192.168.2.33上:

nc 192.168.2.34 < test.txt

3.用nc命令操作memcached。

存儲數據:

printf “set key 0 10 6rnresultrn” |nc 192.168.2.34 11211

獲取數據:

printf “get keyrn” |nc 192.168.2.34 11211

刪除數據:

printf “delete keyrn” |nc 192.168.2.34 11211

查看狀態:

printf “statsrn” |nc 192.168.2.34 11211

模擬top命令查看狀態:

watch “echo stats” |nc 192.168.2.34 11211

清空緩存:

printf “flush_allrn” |nc 192.168.2.34 11211       #謹慎操作,清空了緩存就沒了

SCP(安全拷貝 secure copy)

介紹

SCP 命令的用法和 RCP 命令格式非常類似,區別就是 SCP 提供更安全保障,SCP 在需要進行驗證時會要求你輸入密碼或口令,一般推薦使用 SCP 命令,因為它比 RCP 更安全。SCP 命令使用 SSH 來傳輸數據,並使用與 SSH 相同的認證模式,提供同樣的安全保障,SSH 是目前較可靠得,為遠程登錄會話和其他網絡服務提供安全性的協議,利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SCP 是基於 SSH 的應用,所以進行數據傳輸的機器上必須支持 SSH 服務。

特點

SCP 類似於RCP, 它能夠保留一個特定文件係統上的文件屬性,能夠保留文件屬性或者需要遞歸的拷貝子目錄。

SCP它具備更好文件傳輸保密性。與此同時,付出的代價就是文件傳輸時需要輸入密碼而且涉及到 SSH 的一些配置問題,這些都影響其使用的方便性,對於有特定需求的用戶,是比較合適的傳輸工具。

常用示例

使用 SCP 命令,需要輸入密碼,如果不想每次都輸入,可以通過配置 SSH,這樣在兩台機器間拷貝文件時不需要每次都輸入用戶名和密碼:

生成 RSA 類型的密鑰:

image

上述命令生成 RSA 類型的密鑰。在提示密鑰的保存路徑和密碼時,可以直接回車使用默認路徑和空密碼。這樣,生成的公共密鑰保存/.ssh/id_rsa.pub,私有密鑰保存在 /.ssh/id_rsa 。然後把這個密鑰對中的公共密鑰的內容複製到要訪問的機器上的 /.ssh/authorized_keys 文件中。這樣,下次再訪問那台機器時,就不用輸入密碼了。

scp可以在 2個 linux 主機間複製文件

命令基本格式:

scp [可選參數] file_source file_target

從本地複製到遠程(如下四種方式):

scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_username@remote_ip:remote_file
scp local_file remote_ip:remote_folder
scp local_file remote_ip:remote_file

注:第1,2個指定了用戶名,命令執行後需要再輸入密碼,第1個僅指定了遠程的目錄,文件名字不變,第2個指定了文件名。

第3,4個沒有指定用戶名,命令執行後需要輸入用戶名和密碼,第3個僅指定了遠程的目錄,文件名字不變,第4個指定了文件名。

從遠程複製到本地:

注:從遠程複製到本地,隻要將從本地複製到遠程的命令的後2個參數 調換順序 即可

scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/i.mp3
scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/

Rsync

Rsync是linux/Unix文件同步和傳送工具。用於替代rcp的一個工具,rsync可以通過rsh或ssh使用,也能以daemon模式去運行,在以daemon方式運行時rsync server會開一個873端口,等待客戶端去連接。連接時rsync server會檢查口令是否相符,若通過口令查核,則可以通過進行文件傳輸,第一次連通完成時,會把整份文件傳輸一次,以後則就隻需進行增量備份。

安裝方式:

注:可以使用每個發行版本自帶的安裝包管理器安裝。

sudo apt-get  install  rsync      #在debian、ubuntu 等在線安裝方法;
slackpkg  install  rsync          #Slackware 軟件包在線安裝;
yum install rsync                 #Fedora、Redhat 等係統安裝方法;

源碼編譯安裝:

wget https://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz
tar xf rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure && make && make install

參數介紹:

image


rsync六種不同的工作模式:

1.拷貝本地文件,將/home/coremail目錄下的文件拷貝到/cmbak目錄下。

rsync -avSH /home/coremail/ /cmbak/

2.拷貝本地機器的內容到遠程機器。

rsync -av /home/coremail/ 192.168.11.12:/home/coremail/

3.拷貝遠程機器的內容到本地機器。

rsync -av 192.168.11.11:/home/coremail/ /home/coremail/

4.拷貝遠程rsync服務器(daemon形式運行rsync)的文件到本地機。

rsync -av root@172.16.78.192::www /databack

5.拷貝本地機器文件到遠程rsync服務器(daemon形式運行rsync)中。當DST路徑信息包含”::”分隔符時啟動該模式。

rsync -av /databack root@172.16.78.192::www

6.顯示遠程機的文件列表。這類似於rsync傳輸,不過隻要在命令中省略掉本地機信息即可。

rsync -v rsync://192.168.11.11/data

rsync配置文件說明:

cat/etc/rsyncd.conf              #內容如下
port = 873                       #端口號
uid = nobody                     #指定當模塊傳輸文件的守護進程UID
gid = nobody                     #指定當模塊傳輸文件的守護進程GID
use chroot = no                  #使用chroot到文件係統中的目錄中
max connections = 10             #最大並發連接數
strict modes = yes               #指定是否檢查口令文件的權限
pid file = /usr/local/rsyncd/rsyncd.pid       #指定PID文件
lock file = /usr/local/rsyncd/rsyncd.lock     #指定支持max connection的鎖文件,默認為/var/run/rsyncd.lock
motd file = /usr/local/rsyncd/rsyncd.motd     #定義服務器信息的,自己寫 rsyncd.motd 文件內容
log file = /usr/local/rsyncd/rsync.log        #rsync 服務器的日誌
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[conf]                                   #自定義模塊
path = /usr/local/nginx/conf             #用來指定要備份的目錄
comment = Nginx conf
ignore errors                            #可以忽略一些IO錯誤
read only = no                           #設置no,客戶端可以上傳文件,yes是隻讀
write only = no                          #no為客戶端可以下載,yes不能下載
hosts allow = 192.168.2.0/24             #可以連接的IP
hosts deny = *                           #禁止連接的IP
list = false                             #客戶請求時,使用模塊列表
uid = root
gid = root
auth users = backup                      #連接用戶名,和linux係統用戶名無關係
secrets file = /etc/rsyncd.pass          #驗證密碼文件

原文鏈接

最後更新:2017-08-14 12:02:17

  上一篇:go  xxxxx
  下一篇:go  如何選擇雲主機