Rsync गंतव्य के बाद ट्रेलिंग स्लैश क्यों जोड़ें?


13

इस वेब पेज के अनुसार , rsync गंतव्य के अंत में '/' जोड़ने से इसे नहीं जोड़ने से एक अलग परिणाम उत्पन्न होता है।

मैंने इसका परीक्षण करने की कोशिश की है, लेकिन मैं इसे सत्यापित नहीं कर सकता:

$ mkdir dir{1..3}
$ touch dir1/file
$ rsync -r dir1/ dir2
$ rsync -r dir1/ dir3/
$ ls dir*
dir1:
file

dir2:
file

dir3:
file

क्या गंतव्य के लिए '/' को जोड़ना वास्तव में कभी-कभी एक उपयोग होता है?


क्या आप मैन पेज के इस हिस्से का जिक्र कर रहे हैं A trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination.:? यदि हां, तो कृपया ध्यान दें कि मैन पेज में दिए गए उदाहरण में आपकी कमांड एक के समान नहीं है।
jesse_b 22

@Jesse_b आपकी टिप्पणी मुझे आश्चर्यचकित करती है ... "गंतव्य के अंत में" / "का उपयोग करते समय, rsync डेटा को अंतिम फ़ोल्डर के अंदर चिपकाएगा। गंतव्य के अंत में" / "का उपयोग नहीं करने पर, rsync एक फ़ोल्डर बनाएगा अंतिम गंतव्य फ़ोल्डर का नाम और उस फ़ोल्डर के अंदर डेटा चिपकाएँ। "
हौके लेजिंग

@HaLLaging मैं उलझन में हूं, आश्चर्य क्या है? यह विशेष खंड स्रोत पर होने वाली अनुगामी स्लैश को भी संदर्भित करता है। तो अगर आप था rsync -r dir1/subdir1 dir2/यह की सामग्री की प्रतिलिपि जाएगा subdir1में dir2लेकिन तुमने किया है, तो rsync -r dir1/subdir1/ dir2/यह पूरी निर्देशिका (सामग्री सहित) की प्रतिलिपि बनाएगा subdir1में dir2तो आप के लिए होता है./dir2/subdir1/
jesse_b

@ जेसे_ब मैंने आपकी पहली टिप्पणी में "आदमी" को नोटिस नहीं किया। काफी स्पष्ट रूप से ओपी मैन पेज को संदर्भित नहीं करता है, लेकिन उस पेज पर जिसे उसने लिंक किया है।
हौक लैजिंग

@ ओह, ओह, यह भी नहीं देखा था। मुझे लगता है कि मैं बहुत तेजी से बढ़ रहा था और इसे "मैन पेज के अनुसार" के रूप में पढ़ा।
jesse_b

जवाबों:


28

जब स्रोत फ़ाइल होती है और गंतव्य निर्देशिका मौजूद नहीं होती है तो इससे फ़र्क पड़ता है। उदाहरण के लिए एक फ़ाइल fileको स्रोत के रूप में लें:

  • $ rsync file dest/fileएक निर्देशिका के अंदर की एक प्रति बनाएगा dest, जबकि
  • $ rsync file destfileनामक फ़ाइल की एक प्रतिलिपि बनाएगाdest

जोड़ने के लिए (टिप्पणियों से); यदि कोई निर्देशिका destपहले से मौजूद है, तो उपरोक्त दोनों मामलों fileमें एक प्रति बनाई जाएगी dest

मूल उदाहरण:

~/test > touch file
~/test > mkdir dest1
mkdir: created directory 'dest1'
~/test > tree
.
├── dest1
└── file

1 directory, 1 file
~/test > rsync file dest1
~/test > rsync file dest2
~/test > rsync file dest3/
~/test > tree
.
├── dest1
│   └── file
├── dest2
├── dest3
│   └── file
└── file

2 directories, 4 files
~/test >

1
धन्यवाद। तो अगर निर्देशिका destपहले से ही मौजूद है, तो अनुगामी स्लैश की कोई आवश्यकता नहीं है?
EmmaV

बिल्कुल सही। यदि किसी निर्देशिका के ऊपर के उदाहरण में destमौजूद है, तो fileदोनों मामलों में अंदर की प्रतिलिपि बनाई जाएगी।
22
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.