रोबोकॉपी रूट फ़ोल्डर और उसके टाइम स्टैम्प की नकल नहीं करता है


10

रोबोकॉपी रूट फ़ोल्डर और उसके टाइम स्टैम्प की नकल नहीं करता है - यह सभी उपनिर्देशिकाओं और फाइलों (जब उपयुक्त विकल्प सेट होते हैं) को कॉपी करता है और रोबोकॉपी को यह बताने के लिए कोई विकल्प / तर्क नहीं लगता है कि आप स्वयं रूट फ़ोल्डर और उसके समय की स्टैम्प या विशेषताएँ चाहते हैं। वर्बटिम को भी कॉपी करना।

तो कहते हैं कि मैं चाहता हूं कि मैं C: / ब्रश की नकल करूं

रोबोकॉपी अपने सभी उपनिर्देशिकाओं और फाइलों को गंतव्य में कॉपी करेगा, लेकिन सभी संबंधित विशेषताओं और समय की मुहर के साथ, ब्रश फ़ोल्डर ही नहीं।

आप समझ रहे हैं कि मैं क्या पूछ रहा हूं? यह काफी बुनियादी है और रोबोकॉपी को इसके लिए एक विकल्प की कमी लगती है। लोगों ने विभिन्न मंचों पर पहले भी सवाल उठाए हैं लेकिन जहां तक ​​मेरा सवाल है, किसी ने भी इस सवाल का जवाब नहीं दिया।

यहाँ छवि विवरण दर्ज करें


1
यह एक फ्लायर है, मेरे अनुभव के आधार पर rsync, लेकिन क्या होगा यदि आपके पास अपने लक्ष्य फ़ोल्डर के अंत में एक अनुगामी स्लैश नहीं है? GUI का उपयोग करने के बजाय कमांड-लाइन स्तर पर स्क्रिप्ट को संशोधित करने का प्रयास कैसे करें? मैं एक तथ्य के लिए जानता हूं कि कमांड-लाइन टूल वही करेगा जो आपको चाहिए।

@ रैंडॉल्फ वेस्ट: वर्तमान में मेरे पास लक्ष्य फ़ोल्डर के अंत में एक अनुगामी स्लैश नहीं है। मैं अभी भी रोबोकॉपी को वास्तविक प्रतिलिपि कार्य में स्रोत फ़ोल्डर और उसकी विशेषताओं आदि को शामिल नहीं कर सकता। कोई विचार?
ptrcao

यदि रोबोकॉपी के लिए कोई समाधान नहीं है, तो आप xxcopy पर नज़र डाल सकते हैं (फ्रीवेयर और वाणिज्यिक संस्करण हैं)।
हरमेक

हां, मैं पूरी तरह से समझता हूं और नीचे एक काम करने वाला समाधान जोड़ा गया है। असली समस्या यह है कि आपको सभी फाइलों और फ़ोल्डरों को कॉपी नहीं करना है।
ऑप्सिन

जवाबों:


9
robocopy %1 "C:\DestinationDirectory\%~n1" /E /V /DCOPY:T /LOG:"C:\DestinationDirectory\Copied.txt" /R:10 /W:30 

भेजेंbat या उपयोग में भेजें पर एक फ़ोल्डर छोड़ें । यह स्रोत निर्देशिका के नाम और समय के साथ फ़ोल्डर बनाएगा और सभी फ़ाइलों को कॉपी करेगा।


बहुत बहुत धन्यवाद, उस जादू% ~ n1 ऑपरेटर की खोज कर रहा था
hotzen

@hotzen, क्या करता %~n1है?
पचेरियर

1
वे यहां सूचीबद्ध हैं: microsoft.com/resources/documentation/windows/xp/all/proddocs/…
hotzen

"फ़ाइल नाम के लिए% 1 का विस्तार करता है।"
हॉटजेन

Microsoft ने अपने सभी लिंक तोड़ दिए, यहाँ बैच के लिए प्रतिशत tilde प्रलेखन है, en.wikibooks.org/wiki/Windows_Batch_Scripting#Percent_tilde
kevinf

3

मैं ओपी से सहमत हूं, रूट फ़ोल्डर की नकल करने में सक्षम नहीं होना रोबोकॉपी की एक बड़ी कमी है। कैसे एक अस्थायी फ़ोल्डर में ब्रश फ़ोल्डर को धोखा देने और स्थानांतरित करने के बारे में, अस्थायी फ़ोल्डर पर रोबोकॉपी ऑपरेशन करना, फिर इसे वापस ले जाना?

कुछ इस तरह:

md "c:\verytemporary" && move "c:\brushes" "C:\verytemporary"||( echo Line 1 error occurred & goto :eof )
robocopy c:\verytemporary d:\ /MIR /DCOPY:T
move "c:\verytemporary\brushes" "c:\" && rd /q "c:\verytemporary"||echo Line 3 error occurred

2

md D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushesसही रास्तों को प्रतिस्थापित करते हुए कमांड-लाइन से कोशिश करें ।


3
हाँ, लेकिन आप एक नया फ़ोल्डर बना रहे हैं जिसमें मूल C: \ brushes फ़ोल्डर की विशेषताएँ नहीं होंगी ...?
ptrcao

2

जैसा कि मैं किसी भी उत्तर में कोई अच्छा और आसान समाधान नहीं देख सकता:

यदि रोबोकॉपी के लिए कोई समाधान नहीं है, तो आप xxcopy पर नज़र डाल सकते हैं (फ्रीवेयर और वाणिज्यिक संस्करण हैं)।

रोबोकॉपी के कई अन्य विकल्प हैं, कुछ यहां सूचीबद्ध हैंबेस्ट फ्री फाइल कॉपी यूटिलिटी
भी देखें ।


1
xxcopyएक महान उपयोगिता है, लेकिन फ्रीवेयर संस्करण में एक संकेत है कि आपको कमांड लाइन स्विच की किसी भी बड़ी सूची का उपयोग करने पर जवाब देना होगा। xxcopyएक कमांड विंडो से उपयोग करते हुए , यह अतिरिक्त संकेत परेशान कर रहा है। लेकिन यह xxcopyबैच फ़ाइल से बिल्कुल भी रोकता है (उलझाता है) ।
केविन फ़गन

1

user105198 का ​​जवाब आधा रास्ता है,

D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes वास्तव में सिर्फ एक नया फ़ोल्डर बनाएगा। आपको इसमें / MIR और / DCOPY: T को जोड़ना होगा

साथ / मीर विकल्प, अगर गंतव्य निर्देशिका मौजूद है, गंतव्य निर्देशिका सुरक्षा सेटिंग्स ओवरराइट कर रहे हैं। टेकनेट

/DCOPY:T :: COPY Directory Timestamps.

एक साथ संयुक्त, इसका मतलब है: स्रोत निर्देशिका की विशेषताओं और टाइमस्टैम्प को बनाए गए फ़ोल्डर में प्रतिबिंबित किया जाएगा।

इसलिए:

D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes /MIR /DCOPY:T

1

मुझे लगता है कि आप पाएंगे कि रोबोकॉपी वास्तव में वही करता है जो आप चाहते हैं, बशर्ते आप उसे फ़ोल्डर टाइमस्टैम्प (/ DCOPY: 2) कॉपी करने के लिए कहें। अपने प्रयोगों से, मैंने रोबोकॉपी के लिए निम्नलिखित (प्रतीत होता है कि अनिर्दिष्ट) व्यवहार को सच पाया है:

स्रोत निर्देशिका के सभी निर्दिष्ट गुण गंतव्य निर्देशिका पर लागू होते हैं, भले ही गंतव्य निर्देशिका मौजूद है, मौजूद नहीं है, या स्रोत निर्देशिका से अलग नाम है।

निर्दिष्ट गुणों में (कम से कम) सुरक्षा जानकारी (/ SEC) या फ़ोल्डर टाइमस्टैम्प (/ DCOPY: T) शामिल हो सकते हैं।

इसलिए, निम्न उदाहरण में, c: \ गंतव्य \ फ़ोल्डर को उसी टाइमस्टैम्प को c: \ source \ folder के रूप में असाइन किया जाएगा।

robocopy c:\source\folder C:\destination\folder /E /DCOPY:T

मैंने विंडोज 7, विंडोज 8, और विंडोज 2003 रिसोर्स किट (/ एसईसी पैरामीटर केवल) के साथ शामिल रोबोकॉपी के संस्करणों के साथ इसका परीक्षण किया। ध्यान दें कि Robocopy (XP026 और ऊपर) के केवल नए संस्करण / DCOPY: T पैरामीटर का समर्थन करते हैं।


0

यदि आप अपने /IF :: Include the following Files.साथ गठबंधन करते हैं /E :: copy subdirectories, including Empty ones.तो वांछित प्रभाव मिलता है (करीब):

C:\Temp\Robocopy Source Root>robocopy . "C:\Temp\Robocopy Destination" /E /IF "Brushes*"

1
आपका क्या मतलब है "करीब"? आपके द्वारा लगाई जा रही सीमा क्या है?
पितृको

खतरा रॉबिन्सन होगा !!! आपका सुझाव वर्तमान फ़ोल्डर में प्रत्येक फ़ोल्डर की प्रतिलिपि
बनाता है

0

Robocopy वास्तव में आसानी से ऐसा करने के लिए डिज़ाइन नहीं किया गया है। हालांकि, एक तरीका है।

रूट फ़ोल्डर में 50 फ़ाइलों और 40 फ़ोल्डरों को कहने की सुविधा है। आप केवल फ़ोल्डर एक्स चाहते हैं (लेकिन आप यह भी चाहते हैं कि यह समय और तारीख मोहर है)।

ROBOCOPY c:\ d:\ /XF 50 root file names c:\boot.ini c:\bla.txt etc. /XD c:\windows c:\drivers c:\temp etc. /S /E /SEC /DCOPY:T

/ DCOPY: T इसे फ़ोल्डर समय टिकटों को रखने के लिए कहता है। / XF निर्दिष्ट करता है कि कौन सी फ़ाइलों को कॉपी नहीं करना है, / XD निर्दिष्ट करता है कि कौन से फ़ोल्डर कॉपी नहीं करना है। बस फ़ोल्डर c: \ X निर्दिष्ट न करें।

इसका मुख्य दोष जड़ में सभी फ़ोल्डरों और फ़ाइल नामों पर शोध कर रहा है और विशेष रूप से उन सभी को यहां बुला रहा है। यदि आप विभिन्न प्रणालियों पर यह कर रहे हैं तो एक स्क्रिप्ट लिखी जा सकती है।

काम करने का उदाहरण

रोबोकॉपी c: \ टेस्टिंग c: \ abc / XF c: \ टेस्टिंग \ टेस्टिंग / टेक्स्ट / XD "C: \ टेस्टिंग \ न्यू फोल्डर (2)" "C: \ टेस्टिंग \ न्यू फोल्डर (3)" / S / E / एसईसी / डीसीओपीवाई: टी

रूट वर्किंग उदाहरण

रोबोकॉपी c: \ d: \ / XF c: \ Testing.txt / XD "C: \ New Folder (2)" "C: \ New Folder (3)" / S / E / SEC / DCOPY: T

मेरे परीक्षण ने काम किया, मैं कुछ फ़ोल्डर्स और उप फ़ोल्डर बनाता हूं, c: \ test इस मामले में मूल था, c: \ abc दूसरे ड्राइव का मूल था (जाहिर है कि वे वास्तव में नहीं हैं, लेकिन इस उद्देश्य के लिए यह समझ में आना चाहिए)। रूट से मुझे जो फोल्डर चाहिए था, उसे "न्यू फोल्डर" कहा गया, जैसा कि आप देख सकते हैं कि मैंने इसे / XD में निर्दिष्ट नहीं किया था। यह भी सुनिश्चित करें कि आप c: \ या आपके द्वारा उपयोग किए जाने वाले नाम वैश्विक होंगे। दूसरे शब्दों में, यदि मैंने टेस्टिंग फ़ाइल से c: \ testing को निर्दिष्ट नहीं किया है, तो यह सब सबफ़ोल्डर्स से कॉपी की जा रही है। / SEC सभी फ़ाइल सुरक्षा और समय टिकटों की प्रतिलिपि बनाएगा।


हम्म, मुझे लगता है कि आप सभी रूट फ़ाइलों को बाहर करने के लिए / XF c: * का उपयोग कर सकते हैं। मैं परीक्षण करूंगा कि जब मैं मशीन के सामने हूं और फोन पर नहीं।
ऑप्सिन

नहीं, c: *। * अमान्य है, आपको सभी फ़ाइलों को मैन्युअल रूप से सूचीबद्ध करना होगा।
ऑप्सिन

0

सिद्धांत रूप में, का उपयोग करके /DCOPY:Tअपनी सभी समस्याओं को हल करना चाहिए।

लेकिन, मैंने ऐसा होता देखा है, और मुझे यकीन नहीं है कि मैं इसे "बग" कहूंगा, बल्कि संचालन के अनुक्रम का परिणाम होगा (ठीक है, बग)।

यह आदेश से सभी फाइलों को कॉपी करने के लिए काम करना चाहिए C:\Brushesकरने के लिए D:\NEWBrushes, और /DCOPY:Tकारण चाहिए स्रोत फ़ोल्डर के timestamps गंतव्य फ़ोल्डर में कॉपी करने के लिए:

robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T

मैंने जो देखा है (कम से कम रोबोकॉपी के कुछ संस्करणों पर) वह यह है कि कमांड सफल होता है, लेकिन D:\NEWBrushesफ़ोल्डर का टाइमस्टैम्प वर्तमान तिथि और समय पर सेट होता है।

तो ऐसा प्रतीत होता है कि यह /DCOPY:Tफीचर "आधार" (सबसे ऊपरी) फ़ोल्डर के लिए काम नहीं करता है जिसे आप कॉपी कर रहे हैं।

मुझे विश्वास है कि यह काम कर रहा है, लेकिन यह कि गंतव्य फ़ोल्डर का टाइमस्टैम्प ऑपरेशन द्वारा "कदम रखा" जा रहा है जो बाद में ऑपरेशन अनुक्रम में हैं।

मेरा मानना ​​है कि इस आदेश के लिए हो रहा है:

robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T

कुछ इस तरह है:

  1. D:\NEWBrushesयदि यह पहले से मौजूद नहीं है तो फ़ोल्डर बनाएँ
  2. से टाइमस्टैम्प कॉपी C:\Brushesकरने के लिएD:\NEWBrushes
  3. से फ़ाइलों और सब फ़ोल्डर की प्रतिलिपि C:\Brushesकरने के लिएD:\NEWBrushes

ऐसा प्रतीत होता है कि चरण 3, फ़ोल्डर की सामग्री के संशोधन के D:\NEWBrushesकारण टाइमस्टैम्प D:\NEWBrushesबदल जाता है।

मेरे लिए, "वर्कअराउंड" robocopyफ़ाइलों और फ़ोल्डरों को कॉपी करने के लिए कमांड चलाने के लिए किया गया है , फिर robocopyदूसरी बार (समान) कमांड चलाएं ।

तो, पहली बार जब आप दौड़ते हैं:

robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T

सभी फ़ाइलों और फ़ोल्डरों की प्रतिलिपि बनाई जाएगी। फिर इसे फिर से चलाना:

robocopy "C:\Brushes" "D:\NEWBrushes" /COPY:DAT /DCOPY:T
  (or)
robocopy "C:\Brushes" "D:\NEWBrushes" /DCOPY:T

दूसरी बार robocopyचलता है, किसी भी फाइल या फ़ोल्डर D:\NEWBrushesको संशोधित नहीं किया जाएगा, और /DCOPY:Tविकल्प robocopyटाइमस्टैम्प C:\Brushesको D:\NEWBrushes(जब तक कि फ़ोल्डर / फाइलें C:\Brushesपहले भाग के बाद से बदल गए हैं robocopy) से कॉपी करने के लिए बताएगा ।


-1

मैं रूट फोल्डर को अभी एक ही त्वरित और आसान बैकअप स्क्रिप्ट के लिए रॉबोकॉपी से हल कर रहा था, एक उदाहरण है। किसी की मदद करनी चाहिए:

$Destination="F:\Backup" #change destionation backup drive and foder
$BackupDirs="d:\folder1", "d:\folder2", "d:\folder3\subfolder", "d:\fodler4\subfolder\subsubfodler" #change source folders

#make a loop for every source folder
foreach ($Backup in $BackupDirs) {

#split folder name
$fdname = Split-Path $Backup -leaf

#define folder to create in destionation
$dirtocreate = Join-Path $Destination $fdname

#make directory, yes, some extra script to skip when exist should be in place, but -erroraction solved this in lazy mode :)
md $dirtocreate -ErrorAction SilentlyContinue 

#copy with subfolders and log
robocopy $backup $dirtocreate  /s /nfl /ndl /log:c:\scripts\backup.log

}

तो इस पावरस्क्रिप्ट का उपयोग करें और समस्या हल हो गई है, है ना?
दलाल रस आईटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.