Rsync
將文件從一個 USB 快閃記憶體驅動器複製到其他多個的最快方法?
我正在編寫一個 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 讀取總是比對快閃記憶體或 SSD 的多次隨機訪問要快,即使某些 RAM 磁碟最終被交換到本地物理磁碟也是如此。