সিপি ফাইল এবং ডিরেক্টরি না থাকলে কীভাবে তৈরি করবেন?


15

আমি পরিবর্তিত ফাইলগুলিকে একটি ডিরেক্টরি ডিরেক্টরিতে রেখে অন্য ডিরেক্টরিতে একটি এসএনএন সংগ্রহস্থলে অনুলিপি করতে চাই।

জঞ্জাল এবং জার্গস ম্যানপেজটি পড়ার পরে আমি পরিবর্তিত ফাইল নামগুলি পাওয়ার উপায় খুঁজে পাচ্ছি:

$ svn status -q | awk '{ print $2 }' | xargs -d \\n -I '{}' cp '{}' /tmp/xen/

তবে সমস্যাটি হ'ল এইভাবে ডিরেক্টরি কাঠামো সংরক্ষণ করা হয় না, আমি এই জাতীয় ফাইলগুলি অনুলিপি করতে চাই:

./common/superp.c -> /tmp/xen/common/superp.c
./common/m2mgr.c -> /tmp/xen/common/m2mgr.c
./common/page_alloc.c -> /tmp/xen/common/page_alloc.c
./arch/x86/mm.c -> /tmp/xen/arch/x86/mm.c
./arch/x86/mm/shadow/private.h -> /tmp/xen/arch/x86/mm/shadow/private.h

আমি সিপি '{}' / tmp / xen / '{}' তে সিপি কমান্ড পরিবর্তন করার চেষ্টা করেছি তবে এটি কোনও ফাইল বা ডিরেক্টরি বলে না। প্রয়োজনে সিপি কপি ফাইল তৈরি এবং ডিরেক্টরি তৈরি করার কোনও উপায় আছে কি? এবং দয়া করে চিহ্নিত করুন যে এই কমান্ড চেইনটিকে সরল করা যায় কিনা। :-)

আপনার সকল প্রত্যুত্তরের জন্য ধন্যবাদ। ডিরেক্টরিটি একটু বড় হওয়ায়, আমি সিপি -আর বা আরএসএনসি ব্যবহার করে পুরো ডিরেক্টরিটি অনুলিপি করতে চাই না। টার পাইপ ব্যবহারের বিষয়ে সিকে-র পরামর্শটি বেশ কার্যকর।

svn status -q | awk '{ print $2 }' | xargs tar cf -  | (cd /tmp/xen/; tar xvf -)

উত্তর:


12

দ্রুত চিন্তা যুগল:

  • একটি mkdir -p in (dirname FILE) এ যুক্ত করুন
  • আপনি কি তারের পাইপটি সব সাজানোর জন্য ব্যবহার করতে পারেন?

সম্পাদন করা

 tar -cf archive.tar  `svn status -q | awk '{print $2}'`

পরিবর্তিত ফাইলগুলির একটি সংরক্ষণাগার তৈরি করা উচিত। তারপর:

  tar -xf archive.tar -C /tmp/xen

আপনি যেখানে চান সেখানে এটি করা উচিত। যদি এটি এক ধাপে থাকা দরকার তবে এটিও সম্ভব।


4

আরএসএনসি এটি বেশ সহজ করে তোলে, এটি সাধারণত আমি পুরো ডিরেক্টরি স্ট্রাকচার অনুলিপি করার জন্য ব্যবহার করি:

rsync -av /home/source/svn/repo /home/dest/svn/

এটি / হোম / ডেস্ট / এসএনএন ডিরেক্টরিতে রেপো ডিরেক্টরি এবং এর সমস্ত বিষয়বস্তু তৈরি করবে, সুতরাং আপনার কাছে / হোম / ডেস্ট / এসএনএন / রেপো / ...

সুতরাং আপনার জন্য উদাহরণ:

rsync -rv ./ /tmp/xen/

- একটি, সময় স্ট্যাম্প সংরক্ষণ এবং অন্যান্য জিনিসের মধ্যে পুনরাবৃত্ত হতে হবে, 'ম্যান আরএসএনসিএন'।

প্রশ্নটি ভুল বুঝতে পেরে আপডেট করুন:

ডিরেক্টরি কাঠামো (নল বিকল্প) নকল করতে:

rsync -av --include='*/' --exclude='*' source destination

এবং তারপরে 20 মিনিট আগে বলার আগে ফাইলগুলি অনুলিপি করতে:

find . -type f -mmin -20 -print0 | xargs -0 cp --target-directory /mydestdir/

এটি সুস্পষ্ট একটি, তবে এটি কেবল সংশোধিত ফাইলগুলি নয়, সমস্ত কিছু সিঙ্ক করবে?
সিকে।

ওহো, এটি মিস হয়েছে
কাইল ব্র্যান্ড্ট 14 ই

2

রেফারেন্সের জন্য এখানে ওয়ান-লাইনার:

svn status -q | awk '{print $2}' | xargs tar -c | tar -xC /tmp/xen

এবং ইংরাজীতে:

  • এতে আগ্রহী ফাইলগুলির তালিকা পান svn status -q, যা এতে পাইপ করা হয় ...
  • awk যা ফাইলপথগুলির সাহায্যে কলামটি বের করে: awk '{print $2}'
  • xargs ফাইলগুলি টারের তালিকাগুলি দেওয়ার জন্য ব্যবহৃত হয়, যা ফাইলে একটি স্ট্রাউডকে একটি টারবাল প্রেরণ করে: xargs tar -c
  • যা তাত্ক্ষণিকভাবে -xলক্ষ্য ডিরেক্টরিতে ( -C path) পুনরায় উত্তোলন করা হয় :tar -xC /tmp/xen

1

"Mkdir -p" পাথটি তৈরি করতে "dirname" ব্যবহার করুন, এরকম কিছু:

xargs -d \\n -l '{}' mkdir -p \`dirname '{}'\` && cp '{}' /tmp/xen/

1

rsync -a গভীরতা 1 এর চেয়ে গভীরতর নতুন ডিরেক্টরি তৈরি করে না, সুতরাং rsync কেবলমাত্র আংশিক সমাধান এবং উদাহরণস্বরূপ আমার পক্ষে উপযুক্ত নয় (বেশ কয়েকটি ডিরেক্টরি মাঝখানে অনুপস্থিত থাকলে কিছু রিমোটক্রমক্রমের জন্য কীভাবে আরএসসিএনসি ডিরেক্টরিগুলি করতে হয় তার উত্তর খুঁজতে আমি গুগল করেছিলাম) )

সম্পাদনা: আমি বলতে চাইছি আমার কাছে সোর্স dir: / home/user/projects/homework/1/1.1/ এবং আমি এটিকে রিমোটে সিএসএন করতে চাই: / home/user/projects/homework/1/1.1/ ... তবে গন্তব্য ডিরেক্টরি / হোম / ব্যবহারকারী / প্রকল্পগুলি / হোম ওয়ার্ক এখনও নেই ... এবং আমি সোর্স মেশিনে অন্যান্য সাব-ডাইরেক্টরিগুলি স্থানান্তর করতে চাই না যা / হোম / ইউজার / প্রকল্পসমূহ / এ আছে

সম্পাদনা 2: আরএসসিএন-রিলেটিভ বিকল্প সহ একটি উপায় খুঁজে পাওয়া গেল: উপরের উদাহরণটি এরকম হবে:

সিডি / হোম / প্রকল্পগুলি /; আরএসআইএনসি -আর হোমওয়ার্ক / 1 / 1.1 ব্যবহারকারী @ রিমোট: / হোম / ইউজার / প্রকল্পগুলি /


0

আমি নিম্নলিখিতটি সুপারিশ করব:

  • সবকিছু কপি
  • এটি অপরিবর্তিত ফাইল স্ব স্ব স্থানে পরিবর্তিত ফাইল রেখে এবং যারা মুছে ফেলতে পারবেন।

যাইহোক, আর পতাকা সহ সিপি ফাইল / ফোল্ডারগুলি পুনরাবৃত্তভাবে অনুলিপি করে।

সিপি -আর

0
  • /tmp/f2ফাইলগুলির জন্য ডিরেক্টরি কাঠামো তৈরি করুন/tmp/f

    $ cd /tmp/f/
    $ find . -type f -exec dirname {} \; | uniq | xargs -I {} mkdir /tmp/f2/{} -p
    
  • নতুন গন্তব্য ফাইল অনুলিপি /tmp/f2/

    $ cd /tmp/f
    $ find . -type f -exec cp  {}  /tmp/f2/{} -aPv \;
    
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.