जवाबों:
आप ऐसा करने के rsync
लिए उपयोग कर सकते हैं :
$ rsync -abviuzP src/ dest/
-a
संग्रह मोड; बराबर- surptgoDD (no -H, -A -X)-i
आइटम स्वरूपित पर चालू होता है, जो डिफ़ॉल्ट प्रारूप की तुलना में अधिक जानकारी दिखाता है-b
rsync बैकअप फ़ाइलों को बनाता है जो कि दोनों फ़ोल्डरों में मौजूद हैं, जो कि पुरानी फ़ाइल में है। आप इस प्रत्यय को --suffix .suf से नियंत्रित कर सकते हैं-u
rsync ट्रांसफ़र स्किप फ़ाइलों को बनाता है जो src की तुलना में भाग्य में नए हैं-z
संपीड़न पर मुड़ता है, जो धीमी लिंक पर आसानी से संपीड़ित फ़ाइलों को स्थानांतरित करते समय उपयोगी होता है-P
ऑनपार्टियल और --प्रोग्रेस चालू करता है
--partial
यदि हस्तांतरण बाधित है, तो rsync आंशिक रूप से स्थानांतरित फ़ाइलों को रखता है--progress
यदि आप बड़ी फ़ाइलों को स्थानांतरित करते हैं, तो प्रत्येक हस्तांतरण के लिए एक प्रगति बार दिखाता हैमैं इनमें से कई स्विच छोड़ दूंगा, लेकिन यह आपको शुरू करने के लिए है। मैं शायद कुछ इस तरह का उपयोग करेंगे:
$ rsync -abuP src/ dest/
एक बार ठीक लगने के बाद, आप बैकअप फ़ाइलों को हटाने के लिए इस कमांड को चला सकते हैं:
$ find dest/ -name "*.~" -delete
आइए दिखाते हैं कि हमारे पास निम्नलिखित नमूना डेटा हैं।
मूल डेटा
हम कुछ नकली डेटा बनाने के लिए निम्न कमांड का उपयोग करेंगे।
$ seq 10 | xargs -I{} -- mkdir dest/dir{}
$ for i in $(seq 5); do echo "$i" > dest/dir$i/file$i;done
नकली डेटा इस प्रकार दिखता है:
$ tree -DsifvF --noreport dest/
dest
[ 4096 Aug 29 22:21] dest/dir1/
[ 2 Aug 29 22:21] dest/dir1/file1
[ 4096 Aug 29 22:21] dest/dir2/
[ 2 Aug 29 22:21] dest/dir2/file2
[ 4096 Aug 29 22:21] dest/dir3/
[ 2 Aug 29 22:21] dest/dir3/file3
[ 4096 Aug 29 22:21] dest/dir4/
[ 2 Aug 29 22:21] dest/dir4/file4
[ 4096 Aug 29 22:21] dest/dir5/
[ 2 Aug 29 22:21] dest/dir5/file5
नए आंकड़े
अब हम मूल डेटा ( dest/*
-> src/
) को दोहराएंगे और मिश्रण में कुछ नई फ़ाइलों को जोड़ेंगे। यह "नई रिलीज़" का अनुकरण करता है।
$ cp -pr dest/* src/
$ mkdir src/dir11
$ for i in 1 3 5 11; do echo "$i$i" > src/dir$i/file$i;done
नकली डेटा इस प्रकार दिखता है:
$ tree -DsifvF --noreport src/
src
[ 4096 Aug 29 22:21] src/dir1/
[ 3 Aug 29 23:00] src/dir1/file1
[ 4096 Aug 29 22:21] src/dir2/
[ 2 Aug 29 22:21] src/dir2/file2
[ 4096 Aug 29 22:21] src/dir3/
[ 3 Aug 29 23:00] src/dir3/file3
[ 4096 Aug 29 22:21] src/dir4/
[ 2 Aug 29 22:21] src/dir4/file4
[ 4096 Aug 29 22:21] src/dir5/
[ 3 Aug 29 23:00] src/dir5/file5
[ 4096 Aug 29 23:00] src/dir11/
[ 5 Aug 29 23:00] src/dir11/file11
मर्ज src / में भाग्य /
यह नकल करता है कि हम सिर्फ अपने नए सॉफ्टवेयर ट्री को सेटअप करते हैं src/
और अपनी पूर्व-मौजूदा निर्देशिका में विलय करना चाहते हैं dest/
।
$ rsync -abuP src/ dest/
sending incremental file list
dir1/file1
3 100% 0.00kB/s 0:00:00 (xfer#1, to-check=5/13)
dir11/
dir11/file11
5 100% 4.88kB/s 0:00:00 (xfer#2, to-check=4/13)
dir3/file3
3 100% 2.93kB/s 0:00:00 (xfer#3, to-check=2/13)
dir5/file5
3 100% 2.93kB/s 0:00:00 (xfer#4, to-check=0/13)
sent 416 bytes received 97 bytes 1026.00 bytes/sec
total size is 18 speedup is 0.04
जैसा कि आप देख सकते हैं कि निम्न फाइलें अपडेट की गई थीं, file1, file3, file5 और नई जोड़ी गई dir11 + file11।
और पुष्टि के रूप में हम देख सकते हैं कि निम्न बैकअप फ़ाइलों को rsync
तब बनाया गया था जब इसमें पहले से मौजूद फ़ाइलों का सामना करना पड़ा था dest/
।
$ find dest/ | grep "~"
dest/dir3/file3~
dest/dir1/file1~
dest/dir5/file5~
आप cp -r name_of_the_folder / * name_of_the_destination_folder का उपयोग कर सकते हैं, जहां तारांकन चिह्न (*) सभी फ़ाइलों और पुनरावर्ती प्रतिलिपि के लिए -r के लिए खड़ा है।
आप -i विकल्प का भी उपयोग कर सकते हैं जो आपसे पूछेगा कि क्या आप सामग्री को अधिलेखित करना चाहते हैं।