Robocopy kullanma ve birden çok dizini hariç tutma


60

Yedeklemeden geri yüklemeden önce bazı dizinleri sunucudan kopyalamaya çalışıyorum (en son yedeklemem bozuldu, bu yüzden daha eski bir tane kullanmam gerekiyor :() Windows Kurtarma Ortamı içindeyim ve sunucunun dosyasına erişebiliyorum Sistemimi G:\ve yedekleme ortamımı: C:\Ancak Linux’a daha fazla aşina olduğum için, özellikle Windows’taki komut satırında biraz sorun yaşıyorum robocopy.

Diğerlerini (yani, Windows ve Program Dosyaları klasörleri) hariç tutarken birden fazla dizini (aynı dizin yapısını koruyarak) G: \ 'den C: \' ye kopyalamak istiyorum. /XDSeçeneğin sözdizimini çözemiyorum. Gibi bir şey yapmayı umuyordum:

robocopy G: C:\backup /CREATE /XD "dir1","dir2", ...

NOT: Dizin yapısını da korurken gerçek dosyaları kopyalamak istediğimi açıklığa kavuşturmak istiyorum. Sadece kontrol ettim ve /createsadece boş dosyalar oluşturdum. Tuhaf.

Yanıtlar:


90

Bunu biraz deneme yanılma ile çözdüm /L(komutu gerçek için yapmadan önce). Sonunda geldiğim komut:

robocopy G: C:\backup /MIR /XD G:\dir1 "G:\dir 2" G:\dir3 ...

Görünüşe göre, iz eğik çizgileri dahil olmak üzere robokopiyi dizin listesinin doğru bir şekilde ayrıştırılmasını engeller; bu nedenle dizin adlarına iz eğik çizgileri eklemeyi unutmayın ve adların boşlukları bulunan dizinlerin etrafına tırnak koymayı unutmayın.

/MIRDosyaları kopyalama seçeneği aynı dizin yapısını korur.

Düzenleme: Biraz daha araştırmadan sonra komutu biraz geliştirdim:

robocopy G: C:\backup /MIR /Z /LOG:C:\todaysdate-backup.log /XF *.iso *.log *.au /XD G:\dir1 ...

İlaveler aşağıdaki gibidir:

  • /Z işin yeniden başlatılmasını sağlar
  • /LOG:<logfile path> oldukça açıklayıcı.
  • /XF belirli dosya türlerini hariç tutmak için kullanılıyor, bu yüzden çok uzun sürmüyor

1
/?Anahtarı, Windows konsol komutları hakkında yardım bilgisi almak için her zaman kullanabilirsiniz . Ayrıca helpLinux'un manprogramına benzer bir komut var , ancak üçüncü parti programlar tarafından kullanıldığını görmedim (olabilir - nasıl çalıştığını, hatta bunun mümkün olup olmadığını).
Ben Richards

Hey, yorumunuz için teşekkürler. Bir helpkomut olduğunu düşündüm , ancak Windows Kurtarma Ortamı'nda etkin görünmüyor ("Komut yok 'yardım' bulundu" gibi bir hata aldım). Robocopy, xcopy'nin yerine geçen ve 3. parti olmayan bir windows varsayılan komutudur.
GorrillaMcD

1
Bunun bir Windows komutu olduğunu biliyorum, 3. parti değil. Bunu sadece ileride referans almak için oraya koydum, çünkü Windows'un komut ortamına aşina olmadığınız söylendi. :)
Ben Richards

2
açıklama: /MIR(A'dan B'ye Ayna) B'de A'da bulunmayan tüm dosyaları yok eder. Bu, kopyaladığınız dizin zaten mevcut olduğunda ve yeni B sürümünün (B'nin) tam olarak A kopyasını olmasını istediğinizde kullanışlıdır. (şu anda olduğu gibi).
SherylHohman

4

Bunun OP'nin sorusuna cevap vermediğini biliyorum, ancak burada google'dan kimseye: tırnak kullanıyorsanız XD iş dosyasında başarısız olur.

Kötü:

::
:: Exclude These Directories :
::
    /XD     :: eXclude Directories matching these names
        "Temporary Internet Files"

İyi:

::
:: Exclude These Directories :
::
    /XD     :: eXclude Directories matching these names
        Temporary Internet Files

Tırnak kullanmadan (boşluklar olsun olmasın) istediğiniz kadar dışlama yapın, satır sonrasına satır ekleyin.

Bunu keşfetmemin yolu, / SAVE komut satırı anahtarını kullanmaktı; alıntı dizinlerimden alıntıları alan myjobname!


4

/XDkısmı tekrarlaman gerekiyor

C:\>robocopy "C:\Users\weberjn\Google Drive" "u:\Google Drive" /e /dcopy:t /copy:DT /r:0 /XD "C:\Users\weberjn\Google Drive\photos" /XD "C:\Users\weberjn\Google Drive\Google Photos"

1

Bunun için benim çözümüm, eklemek veya dışlamak istediğim dosyaları veya dizinleri içeren .txt dosyaları oluşturmaktı. Bu dosyaları "Yedekleme" klasörümün altındaki "rcXcludes" alt klasöründe buldum. Dosyaları adlandırma yöntemim aşağıdaki gibidir. Onları "rc" (robokopi için), sonra robocopy komutunda uygulama veya dosya sisteminin bir kısmı için tanınabilir bir gösterimle, ardından "B" veya "R" (Yedekleme veya Geri Yükleme için), sonra "I" ekliyorum. veya "X" (Dahil Et veya Hariç Tutma), sonra "D" veya "F" (Dizin veya Dosya için). Her girişi çift tırnak işareti ve girişler arasında boşluk bırakıyorum. Bir "Dahil Et" dosyasının dosyaları veya dizinleri olabilir, ancak dizinlerin sonunda bir ters eğik çizgi olmalıdır. Dizinler için bir "Hariç Tut" dosyasında son bir ters eğik çizgi kullanmazsınız. Herhangi bir dizin girişi, robocopy komutundaki kaynak yoluna göredir. Bu .txt dosyalarından herhangi birinin tüm içeriği bir satırda olmalı vecarraige return line feed'e sahip değilsiniz . Toplu iş dosyamda, .txt dosyasını bir değişkene almak için SET / P komutunu kullanıyorum. Daha sonra bu değişkenleri FILES için veya sonra / XF veya / XD'den sonra kullanıyorum. Örneğin, geçerli kullanıcının Chrome profilini "Varsayılan" klasörünün tamamını kopyalamadan yedeklemek için aşağıdakileri kullanıyorum.

rcChromeBIF.txt  
"Bookmarks" "Custom Dictionary.txt" "Extension Cookies" "Favicons" "History" "Login Data" "Preferences" "Top Sites" "Visited Links" "Web Data" "Databases\" "Extensions\" "Local Storage\" "Plugin Data\" "User Scripts\" "User StyleSheets\"

rcChromeBXF.txt  
"Bookmarks.bak" "ChromeDWriteFontCache" "Cookies" "Cookies-journal" "Current Session" "Current Tabs" "Extension Cookies-journal" "Favicons-journal" "Google Profile.ico" "History Provider Cache" "History-journal" "Last Session" "Last Tabs" "Login Data-journal" "Network Action Predictor" "Network Action Predictor-journal" "Network Persistent State" "Origin Bound Certs" "Origin Bound Certs-journal" "QuotaManager" "QuotaManager-journal" "README" "Secure Preferences" "Shortcuts" "Shortcuts-journal" "Top Sites-journal" "TransportSecurity" "Web Data-journal"

rcChromeBXD.txt  
"Application Cache" "Cache" "data_reduction_proxy_leveldb" "Extension State" "File System" "GPUCache" "IndexedDB" "JumpListIcons" "JumpListIconsOld" "Local Extension Settings" "Media Cache" "Pepper Data" "Platform Notifications" "Service Worker" "Session Storage" "Storage" "Thumbnails" "Web Applications"

İçindeki yarasa dosyasında, C: \ Backup deyin.

REM ChromeBak.bat
SET chromeprofdir=Google\Chrome\User Data\Default
SET /P rcChrmBIF=<C:\Backup\rcXcludes\rcChromeBIF.txt
SET /P rcChrmBXF=<C:\Backup\rcXcludes\rcChromeBXF.txt
SET /P rcChrmBXD=<C:\Backup\rcXcludes\rcChromeBXD.txt
robocopy "%LOCALAPPDATA%\%chromeprofdir%" "H:\ChromeBackup\%chromeprofdir%" %rcChrmBIF% /E /ZB /COPY:DAT /DCOPY:T /MT:4 /XJ /XF %rcChrmBXF% /XD %rcChrmBXD% /R:10 /W:2 /TBD /NP /V /TS /Log+:"H:\ChromeBackup\ChromeBackup.log"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.