iT邦幫忙

0

XCOPY的問題,是否有人遇過

假如我從第一台的nas備份至第二台的nas所下的xcopy指令如下

xcopy \\nas1\11 \\nas2\11 /D /S /Y

不知這樣下的是否有問題?
我只是需要copy有更改過的檔案就好
但每次執行都會copy一些重覆的東西
就算我執行後中斷再馬上執行
他還是會copy同樣的檔案(檔案都沒更改過喔)

以下是假設
我每次備份1GB的資料,裡面只有20MB有更改過
照理只會COPY那20MB的資料,但他大概會COPY好幾百GB的東西
為什麼這樣?雖然已經省下很多時間,但也不應該會COPY沒更改過的檔案呀?

有哪位大大有遇過可以幫小弟解決一下長久的疑惑

24
逮丸逮丸
iT邦大師 1 級 ‧ 2010-11-10 11:12:38
最佳解答

參考以下的一些用xcopy來做 incremental backup 的例子及說明:
http://en.wikipedia.org/wiki/Incremental\_backup
http://forums.techguy.org/7365015-post4.html

看起來是要補個 /M 的參數,

/M 只複製設定成保存屬性的檔案,並清除保存屬性。

有點抽象,但用以下測試就了解這參數的作用:

<pre class="c" name="code">C:\z>attrib \tmp\*
A          C:\tmp\myscript
A          C:\tmp\myscript.sed
A          C:\tmp\script.txt
A          C:\tmp\T.dat
A          C:\tmp\T.txt
A          C:\tmp\test.bat
A          C:\tmp\test2.bat

C:\z>xcopy c:\tmp c:\z\backup /d /s /y /M
C:\tmp\myscript
C:\tmp\myscript.sed
C:\tmp\script.txt
C:\tmp\T.dat
C:\tmp\T.txt
C:\tmp\test.bat
C:\tmp\test2.bat
複製 7 個檔案

C:\z>attrib \tmp\*
           C:\tmp\myscript
           C:\tmp\myscript.sed
           C:\tmp\script.txt
           C:\tmp\T.dat
           C:\tmp\T.txt
           C:\tmp\test.bat
           C:\tmp\test2.bat

上面可看出加上 /M 會把 source 裡檔案的 A 的屬性清除。
這時我再編輯c:\tmp\test.bat後,再執行:

<pre class="c" name="code">C:\z>attrib \tmp\*
           C:\tmp\myscript
           C:\tmp\myscript.sed
           C:\tmp\script.txt
           C:\tmp\T.dat
           C:\tmp\T.txt
A          C:\tmp\test.bat
           C:\tmp\test2.bat

會發現 test.bat 被編輯過,
又多了 A 的屬性。
所以再執行那 xcopy 且有 /M 的參數,
則只會複製那有 A 屬性的檔案。

看更多先前的回應...收起先前的回應...

這前提是,有權限變更 nas1 上面的檔案屬性。

qmomaruko iT邦新手 5 級 ‧ 2010-11-10 13:15:17 檢舉

執行的電腦是有權限刪除檔案
可否更改屬性我不知怎用dos連進nas去看屬性冏rz

但我馬上試了
xcopy \\nas1\11 \\nas2\11 /D /S /Y /M
還是一樣會COPY沒有更改過的檔案
馬上停止後再執行一次
xcopy \\nas1\11 \\nas2\11 /D /S /Y /M
還是COPY同樣的東西

是加/M沒用還是我試的方式不對??

<pre class="c" name="code">cd \\nas1\11
attrib xxx.txt
#看看 xxx.txt 的屬性是什麼 若有 A 的話,
attrib xxx.txt
#是否會把 A 的屬性消除掉?

如果可以,那就應可以。

我是以兩台A,B都是XP的環境下,
在A機上,把B機的目錄掛成A的 Z:,
運作是沒有問題。

如果用 \\nas1, \\nas2 不行的話,
看看分別掛成 X:, Y: 再操作看看,
加上用 attrib 來觀察屬性,
然後用 /M 參數來試試,
看看檔案的 A 屬性是否會消除掉。

您也可先確認一下,
在您本機裡的目錄對目錄的 xcopy,
可以有我所舉的例子的同樣測試結果。

qmomaruko iT邦新手 5 級 ‧ 2010-11-11 08:34:05 檢舉

嗯~如大大說的~
小弟將nas1和nas2分別掛在我的電腦上
再進行xcopy的指令
果真A 屬性被消除掉了

謝謝大大幫了個大忙~救了地球~
因為這樣可以大幅節省copy的時間~減少co2的產生~~~~(遭拖走

16
ycl8000
iT邦高手 1 級 ‧ 2010-11-10 10:54:51

網路上資料很多, 你要利用 xcopy /m 的參數, 參考資料: http://blog.xuite.net/geniusn/note/23725786

18
CalvinKuo
iT邦大師 7 級 ‧ 2010-11-10 11:04:51

是不是你的來源NAS不是Windows系統,造成xcopy的 /D 參數失效,改用/M參數也失效的話,可能要用第三方軟體來達成你要的效果。

msit iT邦高手 1 級 ‧ 2010-11-10 14:24:57 檢舉

個人是用開版大說的參數就OK了
所以個人覺得 calvinkuo大說的比較有可能。

qmomaruko iT邦新手 5 級 ‧ 2010-11-10 15:18:35 檢舉

NAS的確不是windows的系統
會不會失效我是不知道

剛試了一下
xcopy \\nas1\11 C:\11 /D /S /Y
COPY了184個檔案
再執行第二次
COPY 0個檔案

但我再執行~換一個路徑同一台NAS
xcopy \\nas1\11 \\nas2\22 /D /S /Y
COPY了184個檔案
再執行第二次
COPY 81個檔案
再執行第三次
COPY 81個檔案

就像calvinkuo大大說的~失效冏rz
各位大大沒遇過這樣的情況嗎

因為二台nas買的時間不同
新的沒法支援舊的異地備份
只能用xcopy~但又失效~
那有大大能提供免費又能做差同步定時備份的嗎~~~~~(被拖走
真的還滿需要這種第三方軟體

只是都只找到同步備份 或 定時備份

12
penno
iT邦新手 5 級 ‧ 2010-11-10 11:26:22

是因為檔案格式不同的關係,如果可以的話
你可以試看看使用robocopy, 這是Microsoft出的,在windows203的resoure kit中的一支小工具,你也可以在microsoft的網站download.
試試看
robocopy \\nas1\11 \\nas2\11\ /s /fft

CalvinKuo iT邦大師 7 級 ‧ 2010-11-10 18:04:18 檢舉

[補充]在Windows 7/Vista, 2008/2008R2已經內建robocopy這個指令了。
若是還是檢查日期屬性,檔案系統不同問題還是沒法解決...

我要發表回答

立即登入回答