Menggunakan robocopy dan mengecualikan beberapa direktori

59

Saya mencoba menyalin beberapa direktori dari server sebelum memulihkan dari cadangan (cadangan terakhir saya rusak, jadi saya harus menggunakan yang lebih lama :(). Saya di Lingkungan Pemulihan Windows dan memiliki akses ke file server sistem G:\dan media cadangan C:\saya.Tapi, karena saya lebih akrab dengan Linux, saya mengalami sedikit masalah dengan baris perintah di Windows, khususnya robocopy.

Saya ingin menyalin beberapa direktori (mempertahankan struktur direktori yang sama) dari G: \ ke C: \ sambil mengecualikan yang lain (yaitu, folder Windows dan Program Files). Saya tidak tahu sintaks untuk /XDopsi. Saya berharap untuk melakukan sesuatu seperti:

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

CATATAN: Saya ingin mengklarifikasi bahwa saya ingin menyalin file yang sebenarnya dengan tetap mempertahankan struktur direktori juga. Saya baru saja memeriksa, dan /createhanya membuat file kosong. Aneh.

GorrillaMcD
sumber

Jawaban:

88

Saya menemukan jawabannya dengan sedikit coba-coba dan /L(untuk menguji perintah sebelum melakukannya dengan benar). Perintah yang saya akhiri adalah:

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

Rupanya, termasuk trailing slash membuat robocopy tidak mem-parsing daftar direktori dengan benar, jadi pastikan untuk tidak menyertakan trailing slash pada nama direktori dan ingatlah untuk menaruh tanda kutip di sekitar direktori dengan spasi pada namanya.

The /MIRpilihan mempertahankan struktur direktori yang sama saat menyalin file.

Sunting: Setelah beberapa penelitian lebih lanjut, saya sedikit memperbaiki perintah:

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

Tambahannya adalah sebagai berikut:

  • /Z memungkinkan pekerjaan dimulai kembali
  • /LOG:<logfile path> cukup jelas.
  • /XF sedang digunakan untuk mengecualikan tipe file tertentu sehingga tidak butuh waktu lama
GorrillaMcD
sumber
1
Anda selalu dapat menggunakan /?sakelar untuk mendapatkan informasi bantuan untuk perintah konsol Windows. Ada juga helpperintah, yang mirip dengan manprogram Linux , tapi saya belum melihatnya digunakan oleh program pihak ketiga (bisa jadi - saya tidak terbiasa dengan cara kerjanya, atau jika itu bahkan mungkin).
Ben Richards
Hei, terima kasih atas komentarnya. Saya pikir ada helpperintah, tetapi sepertinya tidak aktif di Lingkungan Pemulihan Windows (saya menerima kesalahan seperti "Tidak ada perintah 'tolong' ditemukan"). Robocopy adalah perintah default windows yang menggantikan xcopy dan bukan pihak ketiga.
GorrillaMcD
1
Saya tahu ini adalah perintah Windows dan bukan pihak ke-3. Saya hanya meletakkannya di sana hanya untuk referensi di masa mendatang, karena Anda mengatakan Anda tidak terbiasa dengan lingkungan perintah Windows. :)
Ben Richards
1
klarifikasi: /MIR(Mirror A ke B) menghancurkan semua file dalam B yang tidak ada dalam A. Ini berguna ketika direktori yang Anda salin sudah ada, dan Anda ingin versi baru (B) menjadi duplikat yang tepat dari A (seperti saat ini ada).
SherylHohman
4

Saya tahu ini tidak menjawab pertanyaan OP, tetapi kepada siapa pun di sini dari google: XD akan gagal dalam file pekerjaan jika Anda menggunakan tanda kutip.

Buruk:

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

Baik:

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

Tempatkan pengecualian sebanyak yang Anda inginkan, baris demi baris, tanpa menggunakan tanda kutip (apakah ada spasi atau tidak).

Cara saya menemukan ini adalah dengan menggunakan saklar baris perintah / SIMPAN: myjobname yang mengambil kutipan dari direktori yang saya kutip!

Chris
sumber
4

Anda harus mengulangi /XDbagian itu

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"
weberjn
sumber
1

Solusi saya untuk ini adalah membuat file .txt yang berisi file atau direktori yang ingin saya sertakan atau kecualikan. Saya memiliki file-file ini dalam subfolder "rcXcludes" di bawah folder "Backup" saya. Metode saya untuk memberi nama file adalah sebagai berikut. Saya mengawali mereka dengan "rc" (untuk robocopy), kemudian beberapa notasi yang dapat dikenali untuk aplikasi atau bagian dari sistem file dalam perintah robocopy, kemudian menambahkan "B" atau "R" (untuk Backup atau Restore), kemudian "I" atau "X" (untuk Sertakan atau Kecualikan), lalu "D" atau "F" (untuk Direktori atau File). Saya mengelilingi setiap entri dengan tanda kutip ganda dan spasi di antara entri. File "Include" dapat memiliki file atau direktori, tetapi direktori harus memiliki trailing backslash. Dalam file "Kecualikan" untuk direktori, Anda tidak menggunakan garis miring terbalik. Entri direktori apa pun relatif terhadap jalur sumber dalam perintah robocopy. Seluruh konten dari file .txt ini harus dalam satu baris dantidak memiliki umpan garis balik carraige. Dalam file batch saya, saya menggunakan perintah SET / P untuk mengimpor file .txt ke dalam variabel. Saya kemudian menggunakan variabel-variabel ini untuk FILES atau setelah / XF atau / XD. Misalnya, untuk mencadangkan profil Chrome pengguna saat ini tanpa menyalin seluruh folder "Default", saya menggunakan yang berikut ini.

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"

Dalam file bat di, katakanlah, C: \ Backup.

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"
Charlie C
sumber