2009-01-18 9 views
9

मैं एक से दूसरे सर्वर से एक वेब साइट स्थानांतरित कर दिया रहे हैं और मैं SCPमैं कैसे जांच कर लें कि दो फ़ोल्डर लिनक्स में एक ही

का उपयोग करके फ़ाइलें प्रतिलिपि बनाई

मैं अब यह देखना होगा कि सभी फाइलों को ठीक कॉपी किया गया है इच्छा ।

मैं साइटों की तुलना कैसे करूं?

फ़ोल्डर के लिए फाइलों की गणना करें?

फ़ोल्डर पेड़ के लिए कुल फ़ाइल आकार प्राप्त करें?

या साइट की तुलना करने का कोई बेहतर तरीका है?

पॉल

उत्तर

11

आप SCP उपयोग कर रहे थे, तो आप शायद rsync इस्तेमाल किया जा सकता था।

rsync पहले से अद्यतित फ़ाइलों को स्थानांतरित नहीं करेगा, ताकि आप इसे कॉपी करने के लिए इसका उपयोग कर सकें, बस एक बार फिर से rsync चलाकर चालू हो।

आप पुराने मेजबान पर कुछ इस तरह कर रहे थे, तो:

scp -r from/my/dir newhost:/to/new/dir 

तो फिर तुम क्या कर सकता है की तरह

rsync -a --progress from/my/dir newhost:/to/new/dir 

'-एक' कुछ 'संग्रह' जो एक करता है के लिए कम है रिकर्सिव प्रतिलिपि और अनुमतियों, स्वामित्व आदि को बरकरार रखती है। अधिक जानकारी के लिए man page देखें, क्योंकि यह बहुत चालाक चीजें कर सकता है।

0

सभी फ़ाइलों के लिए मेक चेकसम, उदाहरण के लिए md5sum का उपयोग कर। अगर वे सभी फाइलों के लिए समान हैं और कोई फ़ाइल गुम नहीं है, तो सबकुछ ठीक है।

0

diffing आपकी निर्देशिका को पुन: प्रयास करें। निर्देशिका में से किसी एक में कुछ अलग होने पर आपको एक अच्छा सारांश मिलेगा।

7
cd website 
find . -type f -print | sort | xargs sha1sum 

फ़ाइलों के लिए चेकसम की एक सूची तैयार करेगा। आप diff देख सकते हैं कि कोई लापता/अतिरिक्त/अलग फाइलें हैं या नहीं।

2

हो सकता है आप इस के लिए कुछ इसी तरह का उपयोग कर सकते हैं:

find <original root dir> | xargs md5sum > original 
find <new root dir> | xargs md5sum > new 
diff original new 
1

आप SCP इस्तेमाल किया, तो आप शायद भी rsync ssh से अधिक उपयोग कर सकते हैं।

rsync -avH --delete-after 1.example.com:/path/to/your/dir 2.example.com:/path/to/your/ 

rsync आपके लिए चेकसम करता है।

ड्राई-रन करने के लिए -n विकल्प का उपयोग करना सुनिश्चित करें। मैनुअल पेज की जांच करें।

मैं एसपीपी या यहां तक ​​कि स्थानीय सीपी पर rsync पसंद करता हूं, हर बार जब मैं इसका उपयोग कर सकता हूं।

यदि rsync कोई विकल्प नहीं है, तो md5sum md5 digests और md5sumc उत्पन्न कर सकता है - चेक उन्हें जांचेगा।

0

मैं एक सर्वर से दूसरे मैं SCP

का उपयोग करके फ़ाइलें आप rsync के साथ ऐसा कर सकता है की नकल की करने के लिए एक वेब साइट के लिए कदम किया गया है, यह अगर आप सिर्फ कुछ दर्पण करना चाहते हैं महान है।

/जोहान

अद्यतन: लगता है जैसे @rjack 6 सेकंड के साथ rsync जवाब के साथ मुझे हरा :-)

19

रिकर्सिव -r और त्वरित -q विकल्प के साथ अंतर का उपयोग करना। यह सबसे अच्छा और अब तक ऐसा करने का सबसे तेज़ तरीका है।

diff -r -q /path/to/dir1 /path/to/dir2 

यह आपको बता नहीं होगा क्या मतभेद हैं (जो देखने के लिए -q विकल्प निकालने के लिए), लेकिन यह बहुत जल्दी आपको बताती हैं कि सभी फाइलों को ही कर रहे हैं होगा।

यदि यह कोई आउटपुट नहीं दिखाता है, तो सभी फाइलें समान हैं, अन्यथा यह अलग-अलग फ़ाइलों को सूचीबद्ध करेगी।

+0

यह काम करता है। लेकिन आपके द्वारा दिया गया विवरण गलत हो सकता है। क्या आपका मतलब है "अगर फाइलें समान होती हैं तो यह दिखाया नहीं जाएगा और अगर अंतर है तो ओनी दिखाता है" – smilyface

+0

धन्यवाद स्माइलीफेस, मैंने इसे और स्पष्ट करने के लिए विवरण अपडेट किया है। – phayes

0

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

find [dir1] -type f -print0 | xargs -0 [preferred hash function] > [file1] 

find [dir2] -type f -print0 | xargs -0 [preferred hash function] > [file2] 

diff -y [file1] [file2] 

कर बस प्रयोग से, मैं भी पार्स और टर्मिनल में समझने के लिए, एक फ़ाइल में अंतर है और यह उत्पादन पर डब्ल्यू ### तर्क का उपयोग करने के लिए आसान लगता है।

+0

यह विधि खाली निर्देशिकाओं को जांचने में विफल रहेगी, और आपको परिणाम को सॉर्ट करने की आवश्यकता है। – zidarsk8

0

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

संक्षेप में, शीर्ष 3 सबसे अच्छा जवाब होगा: (पी एस अच्छा rsync के साथ एक सूखी रन करने के लिए)

diff -r -q /path/to/dir1 /path/to/dir2 

diff <(cd dir1 && find) <(cd dir2 && find) 

rsync --dry-run -avh from/my/dir newhost:/to/new/dir 
संबंधित मुद्दे