在Linux下拷貝大量文件,最好的辦法就是將這些文件一起打包壓縮,使用ssh傳送到目的主機。紅色的兩種方式效果不錯。
- #!/bin/sh
- #copy way!!
-
- #無法保存硬鏈接的時間信息。會將硬鏈接當成普通文件拷貝,記錄最新的時間
- cp -Rp * /dest/dir
-
- #盡可能保存信息,但是,如果硬鏈接過多,使得緩存使用完,同樣無法完成拷貝
- cp -a * /dest/dir
-
- #使用 “-”來傳遞壓縮的文件,然後在指定目錄解壓縮。使用* 會漏掉隱藏文件
- tar -cvf - * | (cd /dest/dir && tar xvfp -)
-
- #使用-depth 基本解決了目錄不可寫或者不可查找的權限問題。
- find . -depth | xargs tar cvf - | (cd ../tar_cp/ && tar xvfp -)
-
- #使用ssh協議,拷貝並發送文件 ------竟然變不了紅色----
- find . -depth | xargs tar cvf - | \
- ssh machine_name 'cd /dest; mkdir dir; cd dir; tar xvfp -'
-
- #cpio -d 創建需要的目錄, -a重置源文件的訪問時間,-m保護新文件的修改時間,
- #-v列出已處理的文件,-p將cpio設置為“copy pass-through”模式,相當於使cpio進入復制操作模式。
- #很像"tar -cvf - * | (cd /dest/dir && tar -xvfp -)"
- find . -depth | cpio -dampv {/dest/dir}
- find . -depth | ssh machine_name 'cpio -dampv /dest/dir' #這個也是紅色的.....
-
- #-a 歸檔開關,保留所有權限、所有權和修改時間 -v 冗余模式開關
- #rsync -av /src/dir/ /dest/dir ---->如果使用/src/dir 就會把/src/dir下
- #的內容復制到 /dest/dir/dir 下。
- rsync -av -e ssh user@remotehost:/src/dir/ /local/dest/dir/
-
- #使用-z 進行壓縮,減少傳送量。
- rsync -avz -e ssh user@remotehost:/src/dir/ /local/dest/dir/