Linux快速複製或刪除大量小檔案

2021-09-12 19:19:24 字數 2704 閱讀 6468

前言

思路:在網路環境中傳輸時,打包再結合nc命令,通過管道和tcp埠進行傳輸。

比如 a往b主機傳輸資料

i. 在機器b上,用nc來監聽乙個埠,任意都行,只要不被占用;並且將收到的資料用tar展開。-l代表監聽模式。

$ nc -l 34183 |tar -c /data1datasets/norm/ -zxf -
ii. 接著,在a上通過nc和 tar傳送data_01目錄。使用一致的34183的埠。

$ tar -zcvf - data_01 |nc 192.168.0.1 34183
rsync提供了一些跟刪除相關的引數 

rsync --help | grep delete

--del an alias for --delete-during

--delete delete files that don't exist on the sending side

--delete-before receiver deletes before transfer (default)

--delete-during receiver deletes during transfer, not before

--delete-after receiver deletes after transfer, not before

--delete-excluded also delete excluded files on the receiving side

--ignore-errors delete even if there are i/o errors

--max-delete=num don't delete more than num files

其中--delete-before 接收者在傳輸之前進行刪除操作

可以用來清空目錄或檔案,如下:

1. 建立乙個空目錄

mkdir -p /del_blank

2. 確立需要清空的目標目錄

/del_data

3. 使用rsync同步刪除(注意目錄後面的「/」),整體效率會快乙個數量級的樣子。

rsync --delete-before -a -h -v --progress --stats /del_blank /del_data

選項說明:

–delete-before 接收者在傳輸之前進行刪除操作

–progress 在傳輸時顯示傳輸過程

-a 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性

-h 保持硬連線的檔案

-v 詳細輸出模式

-stats 給出某些檔案的傳輸狀態

一般我們不需要顯示進度,使用以下命令即可

rsync --delete-before -a -h /del_blank /del_data

這樣我們要刪除的 del_data目錄就會被清空了

如何刪除特別大的檔案(數量級),比如nohup.out這樣的實時更新的檔案,動輒都是幾十個g上百g的,也可

以用rsync來清空大檔案,而且效率比較高 。

1、建立空檔案 

touch /data/blank.txt

2、用rsync清空檔案

rsync -a --delete-before --progress --stats /data/blank.txt ./nohup.out

building file list ...

1 file to consider

blank.txt

0 100% 0.00kb/s 0:00:00 (xfer#1, to-check=0/1)

number of files: 1

number of files transferred: 1

total file size: 0 bytes

total transferred file size: 0 bytes

literal data: 0 bytes

matched data: 0 bytes

file list size: 27

file list generation time: 0.006 seconds

file list transfer time: 0.000 seconds

total bytes sent: 73

total bytes received: 31

sent 73 bytes received 31 bytes 208.00 bytes/sec

total size is 0 speedup is 0.00

** tips:

當src和dest檔案性質不一致時將會報錯 

當src和dest性質都為檔案【f】時,意思是清空檔案內容而不是刪除檔案

當src和dest性質都為目錄【d】時,意思是刪除該目錄下的所有檔案,使其變為空目錄

最重要的是,它的處理速度相當快,處理幾個g的檔案也就是秒級的事

最核心的內容是:rsync實際上用的就是替換原理

Linux快速複製或刪除大量小檔案

前言 思路 在網路環境中傳輸時,打包再結合nc命令,通過管道和tcp埠進行傳輸。比如 a往b主機傳輸資料 i.在機器b上,用nc來監聽乙個埠,任意都行,只要不被占用 並且將收到的資料用tar展開。l代表監聽模式。nc l 34183 tar c data1datasets norm zxf ii.接...

Linux快速複製或刪除大量小檔案

前言 思路 在網路環境中傳輸時,打包再結合nc命令,通過管道和tcp埠進行傳輸。比如 a往b主機傳輸資料 i.在機器b上,用nc來監聽乙個埠,任意都行,只要不被占用 並且將收到的資料用tar展開。l代表監聽模式。nc l 34183 tar c data1datasets norm zxf ii.接...

Linux快速複製或刪除大量小檔案

前言 思路 在網路環境中傳輸時,打包再結合nc命令,通過管道和tcp埠進行傳輸。比如 a往b主機傳輸資料 i.在機器b上,用nc來監聽乙個埠,任意都行,只要不被占用 並且將收到的資料用tar展開。l代表監聽模式。nc l 34183 tar c data1datasets norm zxf ii.接...