1. 程式人生 > >Linux系統之間拷貝檔案的技巧總結

Linux系統之間拷貝檔案的技巧總結

日常工作中需要經常從遠端或本地伺服器拷貝/移動大量檔案。遇到檔案比較多比較散的時候速度較慢,所以在想有沒有較快的方式。經過蒐羅、整理、驗證,大概有以下幾種。

首先,無論本地還是遠端,需要移動或拷貝的檔案較多且都不太大時,用cp命令和mv命令效率較低,可以先使用tar工具對將要拷貝/移動的內容進行打包/壓縮,之後再進行拷貝/移動,最後再解包/解壓縮。

另外,也是很關鍵的一個技巧,即,不必在tar打包/壓縮完畢之後再進行拷貝,解包/解壓縮,可以通過管道一邊打包/壓縮另一邊執行拷貝解包/解壓縮。

比如,tar命令可以和nc命令結合可以快速在兩臺機器之間傳輸檔案和目錄:
B機器:
nc -l 5555 |tar -C /tmp/test/ -xf -
A機器:
tar cf - /tmp/test/ |nc B'IP 5555
上述步驟將A機器/tmp/test/下的內容拷貝到B機器對應的目錄中,其中tar cf - /tmp/test/ |nc B'IP 5555 將內容邊打包邊通過管道和nc命令傳輸到由對應IP地址和5555埠傳到B機器,nc -l 5555 |tar -C /tmp/test/ -xf - 監聽本機的555埠,並將接收到的內容解包至指定的目錄(-C引數指定目標目錄)


此外,tar還可與scp、ssh命令結合:
在A機打包後,複製到B機器並解包
tar -cf - /tmp/test | ssh B'IP "cd /tmp; tar -xf -"
在A機打包,並將打包好的檔案複製到B機
tar -cf - /tmp/test | ssh B'IP "cd /tmp; cat - > test.tar"
tar -cf - /tmp/test | scp - B'
[email protected]
'IP:/tmp
將A機的打包檔案,複製到B機並解包
zcat test.tar | ssh B'IP "cd /tmp; tar -xf -"

也可以直接在本地這麼使用:
cd /tmp/test1
tar -cf - . | (cd /tmp/test2 ; tar -xvpf -)
但有人試驗後得出結論本地直接用cp較快

另外一些小技巧:
拷貝時除了拷貝單個檔案還會拷貝目錄,有時需要連同檔案/目錄的屬性一同拷貝。可以在cp命令中使用-R引數遞迴拷貝目錄,使用-p引數拷貝檔案保留屬性(預設是:mode,ownership,timestamps也可以通過 --preserve[=ATTR_LIST]指定要特別保留的屬性如:context, links,xattr, all),使用-d引數拷貝檔案保留連線。或者簡單的使用-a引數(相當於使用-dR --preserve=all)

如果想看到拷貝大量小檔案的進度可以寫一個簡單的小指令碼:
cd /tmp/test
for i in *
do
cp $i 目標目錄
echo $i is ok....

done

最後補充一條不是技巧的技巧:在使用一個工具完成一項任務之前,先思考當前用的工具是不是最適合的工具?有沒有更好的工具或辦法?如果工具確實很適用於當前任務,那麼在使用該工具時有沒有特殊的技巧可以提高工作效率?(通常,檢視幫助文件可有意外收穫)。

相關推薦

Linux系統之間拷貝檔案技巧總結

日常工作中需要經常從遠端或本地伺服器拷貝/移動大量檔案。遇到檔案比較多比較散的時候速度較慢,所以在想有沒有較快的方式。經過蒐羅、整理、驗證,大概有以下幾種。 首先,無論本地還是遠端,需要移動或拷貝的檔案較多且都不太大時,用cp命令和mv命令效率較低,可以先使用tar工具對將

Windows和Linux以及不同Linux系統之間檔案互傳(檔案拷貝

Windows和Linux上的檔案互傳(互相拷貝)一般常見的主要分為三種: 一. 用Ftp或SFtp進行互傳,這種傳輸方式需要遠端機器上Ftp服務是開啟狀態,可用命令 #service vsftpd status進行檢視,啟動Ftp的命令是:#service vsftpd

使用Xshell在Windows系統Linux系統之間進行檔案傳輸

Windows系統在安裝虛擬機器centos系統之後,如何進行兩者之間的檔案傳輸和互操作,或者如何在Windows端使用Xshell對Linux端進行遠端操作?使用centos的檔案上傳下載小工具,可以快速的幫助我們從本地上傳檔案至Linux伺服器,或者是從Linux伺服器

兩臺Linux系統之間傳輸檔案的幾種方法

scp傳輸 當兩臺LINUX主機之間要互傳檔案時可使用SCP命令來實現 scp傳輸速度較慢,但使用ssh通道保證了傳輸的安全性 複製檔案 將本地檔案拷貝到遠端 scp 檔名 –使用者名稱@計算機I

使用sz rz命令在windows和linux系統之間檔案

1.      安裝sz rz,在windows和linux系統之間傳檔案 2.      首先 apt-cache search sz 3.      apt-get install lrzsz 4.      執行命令sz a.jpg   ##這將把伺服器上的a.jpg

Centos使用scp在Linux系統之間進行檔案傳輸

不同的Linux之間copy檔案常用有3種方法,第一種就是ftp,也就是其中一臺Linux安裝ftp Server,這樣可以另外一臺使用ftp的client程式來進行檔案的copy。第二種方法就是採用samba服務,類似Windows檔案copy 的方式來操作,比較簡潔方便

【轉】Linux系統下不同機器之間拷貝檔案的方法

在Linux系統下,不同機器上實現檔案拷貝 一、將本地檔案拷貝到遠端機器: 其中: /home/administrator/      本地檔案的絕對路徑news.txt                          要複製到伺服器上的本地檔案root     

Linux命令】用 scp 命令在不同主機之間拷貝檔案或目錄

scp 命令 scp 命令 意思是 secure copy 即安全拷貝,可以把它看做是 cp 命令的高階版,可以跨主機拷貝。 經常用來在區域網內不同主機之間分享檔案,或者在本機與遠端主機中分享檔案。 在使用的時候就像使用cp 命令一樣,第一個引數是源,第二個引數的目的。

linux命令 - scp:在本地和遠端之間拷貝檔案

scp命令詳解 - 掃地僧--神龍冠日 - 部落格園http://www.cnblogs.com/likui360/p/6011769.html 開發板linux到虛擬機器linux間的檔案傳輸——scp指令與本地地址的配置 - Leaviathan的部落格 - CSDN部落格https://b

兩臺linux之間拷貝檔案(簡單高效)

將檔案從本地拷貝到伺服器:將當前目錄下的filename檔案拷貝到遠端伺服器192.168.2.208的/home/username/Documents下,如果不用root可能由於許可權不夠,無法拷貝。如果出現 filename下有很多子檔案,用scp –r [email&#

將windows系統主機上的檔案拷貝Linux系統中;將Linux系統中的檔案貼上到Windows主機中

        本篇文章主要實現將windows主機上的檔案複製到Linux伺服器上,這裡為了方便演示,我舉例放在C盤中的一個test101.py檔案,現在我要將它放在Linux系統的home下的sh

使用putty在linux主機和windows主機之間拷貝檔案

       首先下載pytty,解壓開發現裡面有plink.exe pscp.exe psftp.exe putty.exe puttygen.exe puttytel.exe等可執行檔案,如果只是想要連結主機做一些操作那麼使用putty.exe就可一,具體使用可以參見上面給出的連結,要想要上傳下載檔案,那

Linux系統 /etc/passwd 檔案結構

ger 使用 擁有 沒有 ack 區分 核心 我們 lin /etc/passwd 檔案結構這個檔案的構造是這樣的:每一行都代表一個賬號,有幾行就代表有幾個賬號在你的系統中! 不過需要特刪留意的是,裏頭的多賬號本來就是系統正常運作所必須要的,我們可以簡稱他為系統賬號, 例如

使用WinSCP在Windows和Linux系統之間傳輸文件

環境 中文 執行 方式 應用程序 進一步 setup.exe set 安裝 小梅哥編寫,未經許可,嚴禁用於任何商業用途 2018年6月30日 在日常SoC開發中,我們經常需要在Windows和Linux系統之間傳輸文件,例如在Windows系統上的DS-5集成開發環境中編寫

Samba服務搭建實現Windows與Linux系統之間資源共享

img -o common system 用戶 emctl 服務 ssd ons 1安裝服務#yum -y install samba samba-client samba-common查看#rpm –qa | grep samba修改配置文件先備份#cp smb.con

使用Samba服務程序,讓linux系統之間共享文件

data password src utils load use group 系統類型 密碼 yum install -y cifs-utils mkdir /database 創建掛載目錄 在root家目錄創建認證文件(依次為SMB用戶名、SMB用戶密碼、S

Linux系統history命令小技巧

有助於 oca etc proc 哪些 執行 hist 使用 設置環境變量 背景 Linux系統中的history命令可以查看在系統中執行過哪些命令,在系統被***後,可以查看系統中執行過哪命令,有助於分析相關問題。 知識點 在Linux系統執行history #histo

嵌入式Linux標準IO,拷貝檔案fgetc()/fputc(),fread()/fwrite()

文章目錄 1,按字元輸入fgetc(),getc(),getchar() 2,按字元輸出fputc(),putc(),putchar() 3,通過fgetc()/fputc()拷貝檔案 執行結果 通過fread()/fwrite()拷貝檔案

Linux系統——NFS網路檔案系統

在企業叢集架構的工作場景中,NFS網路檔案系統一般被用來儲存共享視訊,圖片,附件等靜態資原始檔,通常網站使用者上傳的檔案都會放到NFS共享裡,然後前端所有的節點訪問這些靜態資源時都會讀取NFS儲存上的資源。NFS是當前網際網路系統架構中最常用的資料儲存服務之一。   叢集:多臺普通伺服器,多臺之

Linux 系統目錄存放檔案基本原則

Linux 的軟體安裝目錄是也是有講究的,理解這一點,在對系統管理是有益的 /usr:系統級的目錄,可以理解為C:/Windows/,/usr/lib理解為C:/Windows/System32。/usr/local:使用者級的程式目錄,可以理解為C:/Progrem Files/。使用者自己編