Rsync

將文件從一個 USB 快閃記憶體驅動器複製到其他多個的最快方法?

  • March 9, 2017

我正在編寫一個 bash 腳本來將文件從單個 USB 驅動器複製到多個其他驅動器。

我目前正在使用從源複製到單個目標的 rsync,一次一個循環遍歷所有輸出驅動器:

for line in $(cat output_drives_list); do
           rsync -ah --progress --delete mountpoints/SOURCE/ mountpoints/$line/
       done

我正在嘗試優化該過程以最大限度地利用 USB 頻寬,從而避免單個驅動器寫入速度的瓶頸。

是否可以執行 rsync 之類的操作,但使用多個輸出目錄,可以一次寫入所有輸出驅動器,但只從輸入讀取一次?

我想其中一些已經被系統記憶體處理了,但這只針對讀取進行了優化。

如果我並行執行多個 rsync 程序,這可能會優化寫入速度,但我也擔心它會降低讀取速度。

並行複制時我需要關心單讀嗎?

我無法測試它,但如果你在後台啟動更多程序,它可能是解決方案:

START=$(date +%s)
for line in $(cat output_drives_list); do
   rsync -ah --progress --delete mountpoints/SOURCE/ mountpoints/$line/ &
done
jobs # get a list of running jobs
wait # wait for all processes to complete
sync
echo It took: $(( $(date +%s)-START )) seconds

編輯:date在提到“基準測試”之後添加了 -stuff。

讀取速度將成為目標寫入的最大瓶頸。

根據源磁碟的大小,如何在影印機上創建一個 RAM 磁碟,將文件記憶體在其中,然後使用並發程序從那裡複製到多個目標,如上面@hschou 展示的那樣?

如何創建保留記憶體的“真實”RAM磁碟

RAM 讀取總是比對快閃記憶體或 SSD 的多次隨機訪問要快,即使某些 RAM 磁碟最終被交換到本地物理磁碟也是如此。

引用自:https://unix.stackexchange.com/questions/350246