কীভাবে খালি উত্স ডিরেক্টরি মুছে ফেলা যায় যখন rsync দিয়ে ফোল্ডারগুলি সরানো হয়?


8

rsyncmvনিম্নলিখিত অপশনগুলির সাথে প্রচলিত ফোল্ডারগুলিকে প্রচলিতভাবে এবং তাত্পর্যপূর্ণভাবে মুভিং করা যেতে পারে :

rsync -axvvES --remove-source-files source_directory /destination/

তবে একটি জিনিস যা আমি এখনও এটি করতে চাইছি তা হ'ল আসল ডিরেক্টরিগুলি সরিয়ে ফেলা। --remove-source-filesপতাকাটি কেবল এটি করে, উত্স ফাইলগুলি সরিয়ে দেয়, তবে উত্স ডিরেক্টরিগুলিও নয়। আমি ইচ্ছা করি একটি --remove-source-directoriesপতাকা এছাড়াও ছিল, কিন্তু না।

আমি কীভাবে এটি মোকাবেলা করতে পারি? আমি মনে করি আমি rm -frএই পদক্ষেপের পরে কেবল একটি ইস্যু করতে পারি , তবে আমি ভুলের সম্ভাবনা প্রবর্তন করে বনাম পদ্ধতিটি সমস্ত প্রক্রিয়াতে রাখতে পছন্দ করি।


আপনার ব্যবহার না করার কারণ কী mv?
নিলস

1
বিভিন্ন খণ্ড এবং আমার সময় সহ সমস্ত বৈশিষ্ট্য সংরক্ষণ করা দরকার need
এলোমিনেট

1
এখানে একই প্রয়োজন unix.stackexchange.com/q/78375/3858
অ্যালিক্স অ্যাক্সেল

1
আমি খুব আশ্চর্য হয়েছি RSSync এর পক্ষে কোনও বিকল্প নেই, বিশেষত যখন এটি গন্তব্যের পাশে থাকে। আমি শেষ করছিfind . -type d -empty | xargs rmdir -p
শ্রীধর সারনোবাত

আপনি জানেন শ্রীধর-সারনোবাত আমি সাহায্য করতে পারি না তবে অবাক হয়েই যেতে পারি যদি rsyncসেশন থেকে ফলাফলগুলি এমন কোনও তালিকায় পাস করার পরে থাকে যে প্রক্রিয়াটির পরে প্রক্রিয়া করা হয় তবে এটি পরিষ্কার হয়ে যায় ... হুঁ।
ইয়েলুমিনেট

উত্তর:


4

আমি কোনও কমান্ড খুঁজে পাইনি যা একসাথে করে, কিন্তু যেহেতু আরএসসিএনসি এখনও আরও ভাল পারফর্ম করে rm -rf(বিশেষত আপনার যদি খুব বেশি সংখ্যক ডিরেক্টরি থাকে) এখানে দুটি আরএসএনসি কমান্ড রয়েছে যা "চাল" করে :

rsync -av --ignore-existing --remove-source-files source/ destination/ && \
rsync -av --delete `mktemp -d`/ source/ && rmdir source/

5

" আরএম-আরএফ " ব্যবহারের অন্তর্নিহিত রেসের শর্ত রয়েছে, আপনি নামগুলি কেবলমাত্র আরএসসিএনসি এবং আরএম অনুরোধের মধ্যে তৈরি করা ফাইলগুলি মুছতে পারেন ।

আমি ব্যবহার করতে পছন্দ করি:

rsync --remove-source-files -a server:incoming/ incoming/ && 
ssh server find incoming -type d -delete

ডিরেক্টরিগুলি খালি না হলে এটি সরবে না।


নোট করুন আপনার স্পষ্টতই -depthওএসএক্স বা অন্যগুলিতে যোগ করার প্রয়োজন হতে পারে।
চার্লি গরিচানাজ

3

আমি একই পরিস্থিতিতে শেষ। আমি এড়াতে চেয়েছিলাম rm -rf, জেনেছি যে আরএসসিএন কিছু ফাইল অনুলিপি করতে ব্যর্থ হয়েছে এবং আমি সেগুলি ফাঁকা করতে চাই না।

খালি ডিরেক্টরিগুলি মুছতে, আমি এটিকে সবচেয়ে সুবিধাজনক হিসাবে পেয়েছি (থেকে sourcedir):

find . -type d -empty -delete

হ্যাঁ, ক্ষমতার জন্য সদর্থক ধন্যবাদ, যা আমি সম্প্রতি খুঁজে পেয়েছি এবং এটি আমার পক্ষে ব্যবহার করা খুব সাধারণ হয়ে উঠেছে।
শ্রীধর সারনোবাত

2

শুধু rm -rf source_directoryআপনার আরএসএনসি-র পরে যুক্ত করবেন না কেন ?

rsync -axvvES --remove-source-files source_directory /destination/ && rm -rf source_directory

প্রতিটি কমান্ড-লাইন প্রোগ্রাম (আদর্শ) একটি নির্দিষ্ট কাজটি করার জন্য তৈরি করা হয় এবং আরও জটিল কাজগুলি সম্পাদন করতে একসাথে একসাথে আটকানো আপনার ব্যাপার up


2
আমি মনে করি আপনি ঠিক. আমি বিশ্বাস করি যে শেষ পর্যন্ত আমাকে প্রথমে নীচে নেমে যেতে হবে কারণ আমি সাধারণত আর সিএনসি-র মতো চালিয়ে যেতে পারি না rs সম্ভবত ব্যবহার করা প্রয়োজন find -depth। দির স্ট্যাকের নীচে নামার, আরএসসিএন দিয়ে এমভি'ইং করা, আপনার নোট অনুসারে rm'ing, এবং তারপরে গাছটি পিছনে সরে যাওয়ার জন্য দ্রুত অ্যালগরিদমিক পদ্ধতির বিষয়ে আপনার কোনও পরামর্শ আছে কি?
ইলিউমিনেট করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.