উত্তর:
আপনার তৈরি করা শেষ পাতা ডিরেক্টরিটির চেয়ে বেশি যদি থাকে তবে আপনি ssh ... mkdir -p
প্রথমে একটি পৃথক চালনা করতে পারেন , বা এখানে বর্ণিত --rsync-path
কৌশলটি ব্যবহার করতে পারেন :
rsync -a --rsync-path="mkdir -p /tmp/x/y/z/ && rsync" $source user@remote:/tmp/x/y/z/
অথবা --relative
টনির পরামর্শ অনুযায়ী বিকল্পটি ব্যবহার করুন । সেক্ষেত্রে আপনি কেবলমাত্র গন্তব্যটির মূলটি নির্দিষ্ট করেছেন, যা অবশ্যই উপস্থিত থাকতে হবে এবং উত্সটির ডিরেক্টরি কাঠামো নয় যা তৈরি হবে:
rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/
এইভাবে, আপনি / pre_existing / dir / new / x / y / z / এর সাথে শেষ করবেন
এবং যদি আপনি "y / z /" তৈরি করতে চান তবে "নতুন / এক্স /" এর ভিতরে ./
না --relative
থেকে আপনি যেখানে শুরু করতে চান তা যোগ করতে পারেন :
rsync -a --relative /new/x/./y/z/ user@remote:/pre_existing/dir/
/ pre_existing / dir / y / z / তৈরি করবে।
&&
?
ধরে নিই যে আপনি আরএসইএনসি সংযোগ করতে ssh ব্যবহার করছেন, এর আগে ssh কমান্ডটি কী পাঠাতে হবে:
ssh user@server mkdir -p existingdir/newdir
যদি এটি ইতিমধ্যে বিদ্যমান থাকে তবে কিছুই ঘটে না
rsync
, কোনও উত্তর নেই।
ssh
এটি সমর্থিত না হয় এবং দূরবর্তী প্রান্তে rsync
সংযুক্ত হয় তবে এটি কোনও বিকল্প নয় rsync daemon
।
-R, --relative
বিকল্পটি এই চেষ্টা করতে হবে।
উদাহরণস্বরূপ: আপনি যদি /var/named/chroot
রিমোট সার্ভারে একই ডিরেক্টরি কাঠামো ব্যাকআপ করতে এবং তৈরি করতে চান তবে -R
ঠিক এটিই করবে।
/./
উত্স পাথ ব্যবহার করে তৈরি করা পথের কেবলমাত্র অংশটি নির্দিষ্ট করতে পারেন । বিশদ জন্য ম্যান পৃষ্ঠা দেখুন।
rsync
লক্ষ্যযুক্ত ফোল্ডারগুলি উপস্থিত না থাকলে স্বয়ংক্রিয়ভাবে ডিরেক্টরিগুলি তৈরি করবে না। দীর্ঘশ্বাস.
--relative
। এটি আপনি যা ভাবেন তা করতে পারে না।
--relative
একত্রে /./
সবচেয়ে newbies জন্য সন্ধান করা হবে। rsync -avz -e ssh --progress --relative ~/./Desktop/ TARGET_IP:~/
লক্ষ্য ডেস্কটপে ডেস্কটপ এর বিষয়বস্তু অনুলিপি করা হবে। ব্যবহারকারী নামগুলিতে পার্থক্য কীভাবে এটি প্রভাবিত করতে পারে তা জানেন না।
এটি আমার পক্ষে কাজ করেছে:
rsync /dev/null node:existing-dir/new-dir/
আমি এই বার্তাটি পাই:
skipping non-regular file "null"
তবে আমার চারপাশে ফাঁকা ডিরেক্টরি ফাঁকা থাকার বিষয়ে চিন্তা করতে হবে না।
আমি মনে করি না আপনি এটি একটি আরএসসিএন কমান্ড দিয়ে করতে পারবেন তবে আপনি অতিরিক্ত ডিরেক্টরিটি প্রথমে এর আগে 'প্রাক-তৈরি' করতে পারেন:
rsync --recursive emptydir/ destination/newdir
যেখানে 'ফাঁকাডির' স্থানীয় খালি ডিরেক্টরি (যা আপনাকে প্রথমে একটি অস্থায়ী ডিরেক্টরি হিসাবে তৈরি করতে হতে পারে)।
এটি কিছুটা হ্যাক, তবে এটি আমার পক্ষে কাজ করে।
চিয়ার্স
ক্রিস
rsync /dev/null node:existing-dir/new-dir/
উপরে পরামর্শ দেখুন ।
এই উত্তরটি অন্যান্য উত্তরের বিট ব্যবহার করে তবে আশা করি পরিস্থিতি সম্পর্কে এটি কিছুটা পরিষ্কার হবে। আপনি কখনই সংশ্লেষ করছেন তা নির্দিষ্ট করেননি - একটি একক ডিরেক্টরি এন্ট্রি বা একাধিক ফাইল।
সুতরাং ধরে নেওয়া যাক আপনি একটি উত্স ডিরেক্টরি এন্ট্রি জুড়ে সরাচ্ছেন, এবং কেবল এতে থাকা ফাইলগুলিকে সরিয়ে নিচ্ছেন না।
ধরা যাক আপনার স্থানীয়ভাবে একটি ডিরেক্টরি আছে data/myappdata/
এবং এটির নীচে আপনার কাছে একটি সাব-ডাইরেক্টরি রয়েছে। আপনার কাছে data/
আপনার টার্গেট মেশিনে কিন্তু কোন data/myappdata/
- এই সহজ যথেষ্ট:
rsync -rvv /path/to/data/myappdata/ user@host:/remote/path/to/data/myappdata
এমনকি আপনি দূরবর্তী ডিরেক্টরিতে আলাদা নাম ব্যবহার করতে পারেন:
rsync -rvv --recursive /path/to/data/myappdata user@host:/remote/path/to/data/newdirname
আপনি যদি কেবল কিছু ফাইল সরান এবং সেগুলি অন্তর্ভুক্ত ডিরেক্টরি এন্ট্রি না সরান তবে আপনি তা করতে পারেন:
rsync -rvv /path/to/data/myappdata/*.txt user@host:/remote/path/to/data/myappdata/
এবং এটি myappdata
আপনার ফাইলগুলিকে স্থাপনের জন্য দূরবর্তী মেশিনে আপনার জন্য ডিরেক্টরি তৈরি করবে Again আবার, data/
দূরবর্তী মেশিনে ডিরেক্টরি উপস্থিত থাকতে হবে।
ঘটনাক্রমে, আমার -rvv
পতাকাটির ব্যবহার দ্বিগুণ ভার্বোজের আউটপুট পেতে হয় তাই এটি কী করে তা ততই প্রয়োজনীয় পুনরাবৃত্ত আচরণের বিষয়ে স্পষ্ট।
আরএসসিএনসি ব্যবহার করার সময় আমি কী পাই তা কেবল আপনাকে তা দেখানোর জন্য (উবুন্টু ১২.০৪-তে 3.0.9)
$ rsync -rvv *.txt user@remote.machine:/tmp/newdir/
opening connection using: ssh -l user remote.machine rsync --server -vvre.iLsf . /tmp/newdir/
user@remote.machine's password:
sending incremental file list
created directory /tmp/newdir
delta-transmission enabled
bar.txt
foo.txt
total: matches=0 hash_hits=0 false_alarms=0 data=0
আশা করি এটি কিছুটা সাফ হয়ে যায়।
rsync -rvv /path/to/data/myappdata user@host:/remote/path/to/data/myappdata
তবে এটি লক্ষ্যবস্তুতে যা তৈরি হয়েছিল তা হ'ল / রিমোট / পাথ / টু / ডেটা / মায়াপডাটা / মায়াপডাটা /
rsync -rvv /path/to/data/myappdata/ user@host:/remote/path/to/data/myappdata
mkdir
তাই আমি হ্যাক ব্যবহার করছি:--rsync-path="echo f > /public/.keep && rsync /public/.keep /public/newfolder/ && rsync" \
এটি একটি অতিরিক্ত ফাইল তৈরি করে তবে আপনি পরে মুছে ফেলতে পারেন।