উত্স ফাইলের ডিরেক্টরি কাঠামো অক্ষত রেখে আমাকে অন্য একটি ডিরেক্টরিতে "ইনস্টল" করা দরকার। উদাহরণস্বরূপ, আমি যদি ./foo/bar/baz.txt
যাচ্ছে /var/www/localhost/webroot/
আমি ফলাফল হতে চান /var/www/localhost/webroot/foo/bar/baz.txt
। rsync
এই ক্ষমতা আছে --relative
, কিন্তু আমি এটি যখন আমি আবিষ্কার এটি symlinks বন্ধুত্বপূর্ণ ছিল না:
$ ls -ald /var/www/localhost/webroot/ | grep ^l
lrwxrwxrwx 1 www-data www-data 15 2014-01-03 13:45 media -> ../static/media
lrwxrwxrwx 1 root root 13 2014-02-24 13:47 var -> ../static/var
$ rsync -qrR . /var/www/localhost/webroot/
$ ls -ald /var/www/localhost/webroot/ | grep var
drwxr-xr-x 3 root root 4096 2014-02-24 13:52 /var/www/localhost/webroot/var
সুতরাং আপনি দেখতে পাচ্ছেন যে সিমিলিংকটি আর কোনও সিমলিংক নয় - ফাইলগুলি ভুল জায়গায় অনুলিপি করা হয়েছিল!
rsync
এছাড়াও --no-implied-dirs
অপশন রয়েছে, যা অতিপরিচিতভাবে আমি যা চাই তা করতে বলে মনে হয় তবে এটি কেবল তখনই কাজ করে যখন আমি পুনরাবৃত্তিমূলক আরএসএনসিটি না করার সময় ইচ্ছা করি , তাই আমাকে করতে হবে:
find . -type f -print0 | xargs -0I{} rsync -R --no-implied-dirs {} /var/www/localhost/webroot/
অন্তর্বর্তী সিমলিংক ডিরেক্টরিগুলি মুছে না ফেলে (আরএসসিএনসি ছাড়াই) ফাইলগুলির এই মিররিংটি সম্পন্ন করার আরও কোনও প্রত্যক্ষ উপায় আছে?