前言:
工作到一個程度,檔案越來越多,上班地點這裡,最近常常跳電,剛好又在 IT邦 幫忙 看到網友提問的問題,
如何用copy 或script指令,來備份系統日當天的檔案,覺得有趣也就順便查了一下指令做了一個相關的script
也順便幫自己的SRVER 備份,先前都是使用,網路上常見看到的檔案複製備份軟體,FastCopy,TeraCopy,好用是好用不過需要人工去開啟設定有點懶。
看到 toithome 大大有寫一個簡短的指令備份 使用Windows Robocopy每日同步資料並產生log檔驗證 。
就整理整理弄了一個比較符合自己想要的script。
指令介紹:
超強的檔案複製備份指令 – robocopy
一般我們複製檔案,多半從檔案總管裡面選一選,然後crtl+c、ctrl+v就好了,但要是我們要複製超多或超大檔案,檔案總管的效能可能不是很好。這時候如果用的是windows 7(包含Server 2008 R2)之後的作業系統,內建有個robocopy的指令,可以幫助我們更有效、更強大的複製我們需要的檔案。
Vista以後的作業系統 (含 Windows 7 ),不須靠外來任何工具程式,XP,2000,2003可由Windows Server 2003 時出的ResourceKit之Tools,裡面約126個命令。
Microsoft官網下載 ResourceKit ,下載完後,直按安裝,安裝程式會自動將 ResourceKit 的資料夾加入Path環境變數,所以可以馬上使用。
Windows下,也許會習慣用copy或Xcopy指令的方式來作檔案的拷貝。如果在您的資料夾下,有比較特殊的檔名或太多層的資料夾深度,那這些常見的拷貝也許就會失敗,尤其一次要拷貝很多檔案時,更容易會因單一檔案失敗而造成需重頭來過。
Robocopy除了是個資料夾/檔案的複製指令外,基本上已經作到了「同步」的功能及滿足「差異化備份」的需求。
我們可以打robocopy /?來看看他所有的參數說明:
-----------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-----------------------------------------------------------------------------
已啟動 : Tue Oct 04 10:24:14 2016
使用方式 :: ROBOCOPY source destination [file [file]...] [optio
source :: 來源目錄 (drive:\path 或 \\server\share\path)。
destination :: 目的地目錄 (drive:\path 或 \\server\share\path)。
file :: 要複製的檔案 (名稱/萬用字元: 預設值是 "*.*")。
::
:: 複製選項 :
::
/S :: 複製子目錄,但是空的子目錄例外。
/E :: 複製子目錄,包括空的子目錄。
/LEV:n :: 只複製來源目錄的前 n 層。
/Z :: 在可重新啟動模式複製檔案。
/B :: 在備份模式複製檔案。
/ZB :: 使用可重新啟動模式; 如果拒絕存取,則使用備份模式。
/EFSRAW :: 在 EFS RAW 模式複製所有加密檔案。
/COPY:copyflag[s] :: 要為檔案複製什麼內容 (預設值是 /COPY:DAT)。
(複製旗標: D=資料、A=屬性、T=時間戳記)。
(S=安全性=NTFS ACL、O=擁有者資訊、U=稽核資訊)。
/SEC :: 複製包含安全性的檔案 (相當於 /COPY:DATS)。
/COPYALL :: 複製所有檔案資訊 (相當於 /COPY:DATSOU)。
/NOCOPY :: 不複製檔案資訊 (可用於 /PURGE)。
/SECFIX :: 修正所有檔案的安全性,即使略過的檔案也包含在內。
/TIMFIX :: 修正所有檔案的檔案時間,即使略過的檔案也包含在內。
/PURGE :: 刪除來源已經不存在的目的地檔案/目錄。
/MIR :: 鏡像樹狀目錄 (相當於 /E 加 /PURGE)。
/MOV :: 移動檔案 (複製後從來源刪除)。
/MOVE :: 移動檔案和目錄 (複製後從來源刪除)。
/A+:[RASHCNET] :: 將指定的屬性新增至複製的檔案。
/A-:[RASHCNET] :: 從複製的檔案移除指定的屬性。
....................................
恕刪.............太多了有興趣自己在電腦上面打,只好取幾個常用的功能,來編輯完成script
下面是我自己寫的一個簡單的script,每個月的30號會自動幫我備份。
@Echo OFF
cls
Title [ NAS Backup 備份程式]
@mode con cols=100 lines=32
color F0
echo.
echo.╭───────────────────╮
echo.│ │
echo.│NAS Backup 備份程式 Ver2.5 │
echo.│ │
echo.╰───────────────────╯
echo.
net use \\192.168.0.10 /user:admin aaaaaaaaaaaa
rem ----- 將開始備份時間寫入 log 紀錄中 -----
rem ----- 開始備份所有檔案 -----
Echo On
echo 開始備份 資訊室資料 >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp0.100.log
TIME /T >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp0.100.log
robocopy E:\資訊室\ \\192.168.0.100\nas\%date:~0,4%%date:~5,2%%date:~8,2%\資訊室\ /mir /MT:100 /R:3 /W:1 /xf *.db >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp0.100.log
TIME /T >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp0.100.log
echo 資訊室資料結束備份 >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp0.100.log
rem ----- 將結束備份時間寫入 log 紀錄中 -----
TIME /T >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp0.10.log
net use * /del
備份的存放主機有兩條線路所以我寫了兩個一樣的只是要備份的資料夾不一樣,加快備份速度。
可以使用參數「/log」的作用:產生日誌檔,如果日誌檔已經存在會被覆蓋。
參數「/log+」的作用:不覆蓋原日誌檔,直接將結果添加到原日誌檔末尾。
不過LOG就是要查得所以我用另一個方式存 LOG
相關參考文章:
如何用copy 或script指令,來備份系統日當天的檔案
使用Windows Robocopy每日同步資料並產生log檔驗證 。
Robocopy 指令範例參考 (MIR問題很多,小心使用)
留言列表