-
【教學】利用 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~!!
很棒的一篇教學~~
重要資料一定要常常備份...
謝謝你的分享~~
我也來去試試看... ^^
-
-
[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 (支援參數)
給有需要的人參考, 也請多多指正&研究~~