![]() |
【教學】利用 WinRAR 定期備份資料 現在常常到處跑來跑去,所以我將我工作的檔案都壓縮成一個檔案丟在網路上, 哪邊找到有空的電腦,就馬上將檔案下載下來繼續工作, 工作完,再利用 WinRAR 將檔案壓縮起來再傳回網路去。 要利用 WinRAR 備份資料可以利用它的指令列模式, 另外,可以將要備份的檔案列表先存成一個檔案 (比方說叫 list.txt 好了), 再要求 WinRAR 將列表中的檔案全部壓縮起來。 在 list.txt 這個檔案中,如果祇寫資料夾名稱, 那麼 WinRAR 會將該資料夾底下的所有檔案壓縮起來; 如果有明確指出檔案名稱,則祇會壓縮該檔案: [quote="list.txt 的內容"] D:\Yukie's Documents\QSR Projects\ [color=#0009ff]=====> 壓縮 QSR Projects 資料夾下的所有檔案[/color] D:\Yukie's Documents\Password\Yukie.kwo [color=#0009ff]=====> 壓縮 Yukie.kwo 這個檔案[/color] [/quote] 之後在 DOS 視窗下輸入底下的命令, 比方說我的 WinRAR 安裝在 D:\Wintools\System~1\WinRAR\ 這個資料夾, 我要將 list.txt 中的檔案列表都壓縮為 Z:\PackageHome.rar, 我就可以下: [quote="WinRAR 的指令列模式"] D:\Wintools\System~1\WinRAR\WinRAR.exe u -r -ibck -inul -m5 -agYYYYMMDD -ta20040403 Z:\PackageHome.rar @D:\YUKIE'~1\list.txt [color=#ff0009](上述指令請輸入於同一行)[/color] [/quote] 其中: [color=#0012ff]u[/color]:如果已經存在 Z:\PackageHome.rar,那麼檢視壓縮檔中有哪些檔案需要更新並更新它 [color=#0012ff]-r[/color]:如果要壓縮的是一個資料夾,那麼將該資料夾底下的所有資料夾也一併壓縮 [color=#0012ff]-ibck[/color]:壓縮時 WinRAR 在背景執行 [color=#0012ff]-inul[/color]:所有的錯誤訊息均不顯示 [color=#0012ff]-m5[/color]:以最大壓縮比進行壓縮 [color=#0012ff]-agYYYYMMDD[/color]:將檔名加上日期,方便分日貯存資料 [color=#0012ff]-ta20040403[/color]:祇壓縮 20040403 之後修改的檔案。 [color=#0012ff]@D:\YUKIE'~1\list.txt[/color]:引入要被壓縮的檔案列表 (如果還想知道有哪些指令可以使用,請參考 WinRAR 的說明書) 這樣子一來,我祇要一個指令就可以將我的檔案全部打包成一個壓縮檔, 非常方便。 WinRAR 還有一個方便的應用: 隨著硬碟的加大,我們在使用上資料夾也越來越多, 而且,資料夾中還有資料夾,有時深度可達十幾層。 但這樣一來出現了一個問題,就是要將資料備份到光碟上時發現資料無法備份, 因為光碟的 ISO9660 格式祇支援 8 層的資料夾, 而且,檔案名稱不可超過 32 個字元, 造成備份出來的光碟片一點用處也沒有,因為根本讀不到資料。 比較簡單的解決辦法就是先將要備份的資料利用 WinZIP/WinRAR 壓成一個壓縮檔, 再燒到光碟中就好了。 缺點是,要將檔案解出來的時候比較花時間, 尤其是壓縮檔有數百 MB 時,那時間花費的更多。 但是至少能有效的將檔案備份起來。 [quote="Yukie"] [b][color=#0900ff]網路類:[/color][/b] [b]ncFtp[/b]:免費的指令列 FTP 程式,可用於 Windows/Linux/FreeBSD [url=ftp://ftp.ncftp.com/ncftp/binaries/ncftp-3.1.7-win32.exe]下載 ncftp[/url] [/quote] 既然將檔案壓縮起來了,那有沒有比較好的辦法將檔案傳到網路上? 我想到的是,這個 ftp 程式必需支援: [list=1][*]有命令列模式,並且可以將登入 ftp Server 後要做的事寫成一個檔案自動執行, 這樣我可以寫個簡單的批次檔將壓縮、上傳自動化。[*]支援被動傳輸模式,因為我常常在防火牆後工作,此時需要被動傳輸模式才能正常上、下傳檔案。 Windows 內附的 ftp 程式雖然可以達到上一個條件, 但因為不支援被動傳輸模式,所以不符合我的要求。[*]必需免費[/list] 後來我發現平常在 Linux 底下最多人使用的 ncftp 就可以達成我的要求, 他有 Windows 版本,內定使用被動傳輸模式, 所以我現在就利用它來自動傳輸檔案。 為了能夠自動登入 ftp server, 我將 ftp server 的位址及我的帳號密碼都寫在 dnsljjh.log 這個檔案中, [quote="dnsljjh.log 內容"] host [color=#ff002d]168.95.1.1[/color] [color=#0012ff]===> 紅色部份改為你要登入的 ftp server 位址[/color] user [color=#ff002d]Yukie[/color] [color=#0012ff]===> 紅色部份改為你在該 ftp server 的帳號[/color] pass [color=#ff002d]12345678[/color] [color=#0012ff]===> 紅色部份改為你在該 ftp server 的密碼[/color] [/quote] 將 ftp server 的相關資訊存成檔案後,就可以使用 ncftp 幫你傳檔案了, 它的使用方式如下: [quote="ncFtp 使用方式"] D:\Winsock\ncFtp\ncftpput.exe -f D:\YUKIE'~1\dnsljjh.log ./www/webdisk/ Z:\PackageHome.rar [color=#ff0009](上述指令請輸入於同一行)[/color] [/quote] 指令說明: [color=#0012ff]-f D:\YUKIE'~1\dnsljjh.log [/color]:叫入 dnsljjh.log 這個檔案,並登入該檔案記錄的 ftp server [color=#0012ff]./www/webdisk/[/color]:切換到 ftp server 的這個資料夾 [color=#0024ff]Z:\PackageHome.rar[/color]:將我的電腦的這個檔案放上 ftp server (詳細說明請看 ncftp 說明書) 最後,既然 WinRAR 可以利用指令列模式壓縮檔案, ncftp 也可以用指令列傳輸檔案, 那麼,這些指令寫成一個批次檔,就可以自動執行所有的工作了。 我將上述指令寫成 upload.bat, 然後拉一個捷徑放在桌面上,以後工作完,要將更新後的檔案壓縮、上傳至 ftp 的話, 祇要點選桌面的 upload.bat 捷徑即可,十分方便。 upload.bat 的內容如下: [quote="upload.bat 內容"] @Echo Off D:\Wintools\System~1\WinRAR\WinRAR.exe u -r -ibck -inul -m5 Z:\PackageHome.rar @D:\YUKIE'~1\list.txt D:\Winsock\ncFtp\ncftpput.exe -f D:\YUKIE'~1\dnsljjh.log ./www/webdisk/ Z:\PackageHome.rar D:\Winsock\ncFtp\ncftpput.exe -f D:\YUKIE'~1\student.log ./www/ Z:\PackageHome.rar [color=#0012ff]==> 再傳至另一個 ftp 以防萬一[/color] [/quote] 此後,我祇要工作到一個段落,我就點選桌面上的捷徑, 電腦就會開始幫我壓縮檔案,並上傳至兩個 ftp server, 在壓縮、上傳時,我可以去上個洗手間、喝個茶, 回來後一切搞定!! 很方便吧?大家可以試看看!! |
回覆: 【教學】利用 WinRAR 定期備份資料 [quote][quote] D:\Wintools\System~1\WinRAR\WinRAR.exe u -r -ibck -inul -m5 -agYYYYMMDD -ta20040403 Z:\PackageHome.rar @D:\YUKIE'~1\list.txt [color=#ff0009](上述指令請輸入於同一行)[/color] [/quote] 其中: [color=#0012ff]u[/color]:如果已經存在 Z:\PackageHome.rar,那麼檢視壓縮檔中有哪些檔案需要更新並更新它 [color=#0012ff]-r[/color]:如果要壓縮的是一個資料夾,那麼將該資料夾底下的所有資料夾也一併壓縮 [color=#0012ff]-ibck[/color]:壓縮時 WinRAR 在背景執行 [color=#0012ff]-inul[/color]:所有的錯誤訊息均不顯示 [color=#0012ff]-m5[/color]:以最大壓縮比進行壓縮 [color=#0012ff]-agYYYYMMDD[/color]:將檔名加上日期,方便分日貯存資料 [color=#0012ff]-ta20040403[/color]:祇壓縮 20040403 之後修改的檔案。 [color=#0012ff]@D:\YUKIE'~1\list.txt[/color]:引入要被壓縮的檔案列表 [/quote] WinRAR 的 -ta 這個指令雖然看起來不是很方便, 因為還要自己設定日期才能發生作用, 但是祇要用其他程式配合一下就很方便了。 我自己是使用 4DOS/4NT 配合 WinRAR 使用。 4DOS/4NT 提供很多函數方便批次操作,我自己的批次檔如下: [quote] @Echo off set dd=%_date set dm=%@eval[%@date[%_date] -3] set dl=%@makedate[%dm] REM 利用 @date 取得自 1980-1-1 至今共有幾天 REM 接著利用 @eval 將這個天數減掉 3 REM 再將減掉後的天數轉回一般日期 set dx=20%@instr[0,2,%dd]%@instr[3,2,%dd]%@instr[6,2,%dd] set dy=20%@instr[0,2,%dl]%@instr[3,2,%dl]%@instr[6,2,%dl] REM 利用 @instr 抽出日期文字 REM 利用 @instr 抽出日期文字,但 4DOS 與 4NT 的日期欄位排列不同 REM 4DOS 下使用 set dx=20%@instr[6,2,%dd]%@instr[0,2,%dd]%@instr[3,2,%dd] REM 4NT 下使用 set dx=20%@instr[0,2,%dd]%@instr[3,2,%dd]%@instr[6,2,%dd] del Z:\Anytime%dx.rar C:\Wintools\FILEUT~1\WinRAR\RAR.exe u -r -ibck -inul -m5 -agYYYYMMDD -ta%dy Z:\Anytime.rar @D:\YUKIE'~1\Packages.lst REM 利用 RAR 的 -ag 將檔案附加日期;利用 -ta 找出自 %dy 日期之後有修改的檔案 C:\Winsock\ncFtp\ncftpput.exe -f D:\YUKIE'~1\dnsljjh.log . Z:\Anytime%dx.rar C:\Winsock\ncFtp\ncftpput.exe -f D:\YUKIE'~1\student.log . Z:\Anytime%dx.rar C:\Winsock\ncFtp\ncftpput.exe -f D:\YUKIE'~1\edu.log . Z:\Anytime%dx.rar Exit [/quote] |
Good! 感謝教學 :) 我用過TaskZip、UltimateZip來做壓縮備份, 只是還沒有上傳功能..現在看了有點心癢癢了:D 但相較之下WinRAR沒有圖形介面的備份(?)有點可惜了. 有幾個問題想請教: 1.可自訂其他壓縮格式(如zip)? 因其他電腦相容問題. 2.有可能上傳到網路硬碟嗎? 例如我慣用的Mail2000. 3.承上, 若只能到FTP server, 一般人如何申請/使用? |
[QUOTE][i]最初由 Leon Chou 發表[/i] [B]Good! 感謝教學 :) 我用過TaskZip、UltimateZip來做壓縮備份, 只是還沒有上傳功能..現在看了有點心癢癢了:D 但相較之下WinRAR沒有圖形介面的備份(?)有點可惜了. 有幾個問題想請教: 1.可自訂其他壓縮格式(如zip)? 因其他電腦相容問題. 2.有可能上傳到網路硬碟嗎? 例如我慣用的Mail2000. 3.承上, 若只能到FTP server, 一般人如何申請/使用? [/B][/QUOTE] WinRAR 有很漂亮的圖形介面,但是圖形介面的使用有其限制性, 最大的限制就是無法像我上面所說的自動備份。 所以我要用壓縮程式時,都要看看是否支援命令列模式, 這樣才方便放在批次檔中自動執行。 回答您的問題:[list][*]WinRAR 支援 ZIP 檔。但是以 RAR 檔壓縮的話,可以用 -rr 參數製作出有恢復記錄的壓縮檔,如果壓縮檔在傳輸的過程中有些微損毀,還可以試圖修復。而 Zip 檔就沒有辦法修復了。如果是為了解壓縮的問題,可以加上 -sfx 參數壓成自解壓縮檔,就不必擔心電腦上沒有安裝 WinRAR 無法解壓縮了。[*]可以上傳到網路硬碟,因為網路硬碟其實也祇是 FTP 而已。我自己是安裝 OpenWebMail,發現 OpenWebMail 就是將每個人的家目錄底下建一個叫 webdisk 的資料夾當做網路硬碟,我猜 Mail2000 應該也是用相同的方法才對。但是要以 ftp 上傳至 Mail2000 的網路硬碟,就得看它是否有開放 Ftp 功能了。[*]ftp server 的話,要去找看看了。我上傳的 FTP 都是我自己的電腦,所以沒有帳號申請的問題……[/list] |
Good~!! 很棒的一篇教學~~ 重要資料一定要常常備份... 謝謝你的分享~~ 我也來去試試看... ^^ |
謝謝樓主的解答 :D |
[QUOTE][i]最初由 Leon Chou 發表[/i] 3.承上, 若只能到FTP server, 一般人如何申請/使用?[/QUOTE] 想到一件事, 還可以用 cdrecord + mkisofs + cygwin 自動燒錄, 這樣子就算沒有 Ftp server,也能備份到光碟片上, 讓資料有比較好的保護。 |
最近總算有時間來玩這個,覺得WinRAR command line 支援的參數超多,功能真是強~ 不過遇到一個瓶頸就是日常備份的日期檔名問題... 我通常在晚上做備份,壓縮檔名為隔天的日期, 例如 7/8 晚上備份為 0709a.zip (a = AM, 因為7/9早上要更新到別處) 如果我是超過 7/8 24:00 做的 (也就是 7/9 凌晨), 那麼使用 WinRAR 的 -agMMDD 就沒問題 (-ag參數會產生系統日期檔名), 但如果我在 7/8 24:00 之前做的,怎麼辦呢? 用 -ag 就會產生 0708a.zip 而蓋掉原先的 0708a.zip ~ 問題二,考量重覆做備份的情形,如果備份前要先刪除已存在的同名 zip, How? bat 要如何判斷出 0709a 這個檔名 (無論現在是 24:00 之前/之後) ? PS. 因為 WinRAR A ... 指令會把檔案加入已存在的同名 zip,所以要先刪除。 如果改用 WinRAR U ... 又只會更新,不會新增檔案。 好心人請協助,任何建議都感謝~~ :D |
以下是我從 WinRAR HELP 中複製的應該有幫助 請注意這一行 ---------------------------------------------------------------- N 壓縮檔編號。WinRAR 對既有的檔案尋找賦予的名稱,如果找到,則增加壓縮檔編號直到檔名唯一為止。 ---------------------------------------------------------------- 當建立壓縮檔案時,以格式 [YYYYMMDDHHMMSS] 附加目前日期字串,這對於每日更新是有用的。 附加字串是由 [格式] 選項所定義,或者如果不存在時,則使用 [YYYYMMDDHHMMSS]。格式字串可以包含下列的字元: Y 年 M 月 MMM 純文字式的月份 (Jan,Feb,等) W 純文字星期 (星期以星期一開始) A 數字星期 (星期一為 1,星期日為 7) D 日(月) E 日(年) H 時 M 分 (如果接續在時後面,則視為分看待) S 秒 N 壓縮檔編號。WinRAR 對既有的檔案尋找賦予的名稱,如果找到,則增加壓縮檔編號直到檔名唯一為止。 每一個上述的格式字串各代表加入壓縮檔檔名的一個字元。例如,使用 WW 代表兩位數星期數,YYYY 定義四位數年份。 如果在格式化字串的第一個字元是 '+',日期字串和基本壓縮檔名位置交換,所以日期將在壓縮檔名之前。 格式化字串可以包含自訂的文字,該文字須包含在 '{?' 及 '}' 字元之間。這段文字會插入到檔名中。 其他字原則沒有改變,會加入壓縮檔檔名中。 如果您要更新已經存在的壓縮檔,請小心使用 -ag 開關。基於前次使用 -ag 的格式字串及時間的不同,所產生的壓縮檔跟現存的可能不一樣。要是這樣,RAR 會產生新的壓縮檔,不會更新已存在的檔案。 [QUOTE=leonchou]最近總算有時間來玩這個,覺得WinRAR command line 支援的參數超多,功能真是強~ 不過遇到一個瓶頸就是日常備份的日期檔名問題... 我通常在晚上做備份,壓縮檔名為隔天的日期, 例如 7/8 晚上備份為 0709a.zip (a = AM, 因為7/9早上要更新到別處) 如果我是超過 7/8 24:00 做的 (也就是 7/9 凌晨), 那麼使用 WinRAR 的 -agMMDD 就沒問題 (-ag參數會產生系統日期檔名), 但如果我在 7/8 24:00 之前做的,怎麼辦呢? 用 -ag 就會產生 0708a.zip 而蓋掉原先的 0708a.zip ~ 問題二,考量重覆做備份的情形,如果備份前要先刪除已存在的同名 zip, How? bat 要如何判斷出 0709a 這個檔名 (無論現在是 24:00 之前/之後) ? PS. 因為 WinRAR A ... 指令會把檔案加入已存在的同名 zip,所以要先刪除。 如果改用 WinRAR U ... 又只會更新,不會新增檔案。 好心人請協助,任何建議都感謝~~ :D[/QUOTE] |
2 個附加檔案 [QUOTE=Viking]以下是我從 WinRAR HELP 中複製的應該有幫助 請注意這一行 ---------------------------------------------------------------- N 壓縮檔編號。WinRAR 對既有的檔案尋找賦予的名稱,如果找到,則增加壓縮檔編號直到檔名唯一為止。 .........[/QUOTE] 謝謝你的意見! 但我基於不同目錄不同壓縮選項的需求, 一個備份檔會分幾次(數行指令)壓縮而成, 如果用壓縮檔序號就會產生好幾個壓縮檔了。 anyway, 我已研究出一個... 不甚滿意但可接受的寫法。 感謝大家~~ :) 經過多日的測試與修改, 總算有點成果.. 附檔含有2個bat, 分別是日常備份和完整備份的範例. 日常備份(daily.bat)功能較多, 適用彈性的需求; 可以3種執行方式: shortcut, Run, cmd (支援參數) 給有需要的人參考, 也請多多指正&研究~~ |
所有時間均為 +8。現在的時間是 08:23 AM。 |
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。