服務器是采用windows版的cwRsync進行同步,本來同步得好好的把 --delete 參數帶上以後就出現錯誤
IO error encountered — skipping file deletion
找了很久也沒找到解決方案,查了目錄權限,服務器日志裡也沒看到磁盤出錯的日志信息,在網上找到了一篇臨時的解決方案。
仔細查看了一下rsync的參數,發現有一個選項是:
--ignore-errors 即使出現 I/O 錯誤也進行刪除
(即使出現 I/O 錯誤也進行刪除)
於是加上了這個參數,再次執行同步,問題解決了。
但是至於為什麼rsync會誤報這個錯誤,目前我還沒有找到原因,如果有哪一位知道的話,歡迎解惑。
附上rsync的常用參數選項,方便大家參考:
選項 說明
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等價於 -rlptgoD (不包括 -H)
-r, --recursive 對子目錄以遞歸模式處理
-l, --links 保持符號鏈接文件
-H, --hard-links 保持硬鏈接文件
-p, --perms 保持文件權限
-t, --times 保持文件時間信息
-g, --group 保持文件屬組信息
-o, --owner 保持文件屬主信息 (super-user only)
-D 保持設備文件和特殊文件 (super-user only)
-z, --compress 在傳輸文件時進行壓縮處理
--exclude=PATTERN 指定排除一個不需要傳輸的文件匹配模式
--exclude-from=FILE 從 FILE 中讀取排除規則
--include=PATTERN 指定需要傳輸的文件匹配模式
--include-from=FILE 從 FILE 中讀取包含規則
--copy-unsafe-links 拷貝指向SRC路徑目錄樹以外的鏈接文件
--safe-links 忽略指向SRC路徑目錄樹以外的鏈接文件(默認)
--existing 僅僅更新那些已經存在於接收端的文件,而不備份那些新創建的文件
--ignore-existing 忽略那些已經存在於接收端的文件,僅備份那些新創建的文件
-b, --backup 當有變化時,對目標目錄中的舊版文件進行備份
--backup-dir=DIR 與 -b 結合使用,將備份的文件存到 DIR 目錄中
--link-dest=DIR 當文件未改變時基於 DIR 創建硬鏈接文件
--delete 刪除那些接收端還有而發送端已經不存在的文件
--delete-before 接收者在傳輸之前進行刪除操作 (默認)
--delete-during 接收者在傳輸過程中進行刪除操作
--delete-after 接收者在傳輸之後進行刪除操作
--delete-excluded 在接收方同時刪除被排除的文件
-e, --rsh=COMMAND 指定替代 rsh 的 shell 程序
--ignore-errors 即使出現 I/O 錯誤也進行刪除
--partial 保留那些因故沒有完全傳輸的文件,以是加快隨後的再次傳輸
--progress 在傳輸時顯示傳輸過程
-P 等價於 --partial --progress
--delay-updates 將正在更新的文件先保存到一個臨時目錄(默認為 “.~tmp~”),待傳輸完畢再更新目標文件
-v, --verbose 詳細輸出模式
-q, --quiet 精簡輸出模式
-h, --human-readable 輸出文件大小使用易讀的單位(如,K,M等)
-n, --dry-run 顯示哪些文件將被傳輸
--list-only 僅僅列出文件而不進行復制
--rsyncpath=PROGRAM 指定遠程服務器上的 rsync 命令所在路徑
--password-file=FILE 從 FILE 中讀取口令,以避免在終端上輸入口令,通常在 cron 中連接 rsync 服務器時使用
-4, --ipv4 使用 IPv4
-6, --ipv6 使用 IPv6
--version 打印版本信息
--help 顯示幫助信息
注意:
若使用普通用戶身份運行 rsync 命令,同步後的文件的屬主將改變為這個普通用戶身份。
若使用超級用戶身份運行 rsync 命令,同步後的文件的屬主將保持原來的用戶身份。
傳輸的命令模式是:
rsync [OPTION]... [USER@]HOST::SRC [DEST]
參數說明:
-v, --verbose 詳細模式輸出
-z, --compress 對備份的文件在傳輸時進行壓縮處理
-r, --recursive 對子目錄以遞歸模式處理
-t, --times 保持文件時間信息
-o, --owner 保持文件屬主信息
-p, --perms 保持文件權限
-g, --group 保持文件屬組信息
--progress 顯示備份過程
--delete 刪除那些DST中SRC沒有的文件
--exclude "data/" 表示不對/home/user01/backup/data/目錄下的文件進行備份