यह करने की आवश्यकता नहीं है rsync
, लेकिन यह अच्छा होगा कि ऐसा करने के लिए एक स्क्रिप्ट लिखना न पड़े, और rsync
मैं जो चाहता हूं उसके बहुत करीब हूं।
rsync -a
(या -l
) सीमलिंक को संरक्षित कर सकते हैं, और -L
सिम्फ़लिंक को निष्क्रिय कर सकते हैं और इसे कॉपी कर सकते हैं जैसे कि यह सामान्य फ़ाइल / डायर है। हालाँकि, क्या सिमलिंक रखना संभव है, और लिंक को इंगित करने वाली फ़ाइलों / निर्देशिकाओं की प्रतिलिपि भी बनाएं?
यहाँ एक उदाहरण है। कहें कि हमारे पास यह फ़ोल्डर पदानुक्रम है:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirB/not_this_file
dirC/file
dirC/file2
dirD/others
और जब मैं rsync -aR dirA dest
(या कुछ और) करता हूं, तो मैं चाहता हूं कि ये बिल्कुल इसमें दिखाई दें dest
:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirC/file
dirC/file2
क्या यह संभव है rsync
? धन्यवाद।
आइए मान लें कि पूर्ण पथ पर मौजूद सहानुभूति या स्रोत निर्देशिका के बाहर की ओर इशारा किया जा सकता है।
a -> b
, b -> c/foo
, c -> d/e
: नकल के लिए एक अनुरोध a
भी कॉपी चाहिए b
, c
, c/foo
, d
, d/e
और d/e/foo
)।
dirA/link
कोई सिमलिंक है../dirB/file
, तो इसे और इसे कॉपीdirB/file
करने के रूप में संभाला जाना चाहिए । यदि कोई लिंक हो तो क्या होगा ? क्या होता है, सामान्य रूप से, अगर एक निर्देशिका की ओर इशारा करता है जो कि निर्देशिका पेड़ में ऊपर है?dest/dirB/file
dirA/link
dest/dirA/link
dirA/link
../../another_file
dirA/link