it-swarm.asia

انسخ محتويات الدليل باستخدام أمر 'cp'

كيف يمكنك نسخ جميع محتويات دليل واحد إلى آخر؟

فمثلا:

$ cd /home/newuser
$ cp -a /backup/olduser/* .

المشكلة في ما سبق هي أن نمط الكرة الأرضية "*" يطابق الأدلة المخفية ". و ".." وينتهي بك الأمر مع دليل "olduser" داخل "newuser" ، وكذلك المحتويات.

يمكنك أيضًا القيام بشيء مثل هذا:

$ rmdir /home/newuser
$ cp -a /backup/olduser /home/newuser

ولكن ماذا لو كان مستخدم جديد يحتوي بالفعل على بعض الملفات والدلائل الافتراضية؟

ما هي أبسط الطرق وأكثرها سهولة وأسرعها في تذكرها وليس الفوضى لنقل محتويات دليل إلى آخر باستخدام الأمر "cp" الأساسي والقذيفة؟

33
nomount

محاولة:

cp -ra /backup/olduser/. /home/newuser
30
nagul

دليلان a و b.

كلاهما له ملفات في.

أنت في دليل يحتوي على b.

cp -r ./a b

-r = بشكل متكرر.

23
Rich Bradshaw

تذكر أيضًا أنه افتراضيًا ، قم بنسخ الدليل الأول في الدليل الثاني إذا كان الثاني موجودًا. على سبيل المثال ، ستقوم cp -a a b بنسخ INTO b في حالة وجود b ، بمعنى أنه سيتم إنشاء a في b.

إذا لم يكن ما تريده ، وتريد نسخ محتوى من a إلى b (على سبيل المثال عند نسخ نظام ملفات كامل إلى نقطة تحميل) ، استخدم :

cp -a a/. b

كما في الاجابة السابقة.

يرجى أيضًا ملاحظة أن -a يتضمن -r بحيث -ar غير ضروري.

18
Nicolas Bonnefon

ما لم تكن قد قمت بإعادة تكوين Shell على نحو خطير ، فإن نمط الالتقاط "*" لا يتطابق "." أو ".." ، كما يمكنك التحقق من استخدام echo * فقط. ما تفعله بدلاً من ذلك هو حذف الملفات التي يبدأ اسمها بـ "." ، لذلك لن يفوتك كل الملفات المخفية. يمكنك تعديل بعض هذا السلوك باستخدام خيارات Shell ، على سبيل المثال ، خيار dotglob في bash ، لكن ذلك لن يكون الخيار المحمول والقوي الذي تبحث عنه.

إذا كنت بحاجة إلى القيام بذلك أكثر من مرة أو مرتين ، فنوصيك بالبحث في rsync أو انسجامًا (اعتمادًا على الاحتياجات المحددة) بمواصفات المصدر والهدف المستهدفة بعناية.

بديل آخر هو وضع الدليل المصدر في لعبة tarball وإلغاء ضبطه على الدليل الهدف الحالي.

6
Peter Eisentraut

سيؤدي هذا إلى نسخ كل من الملفات العادية والمخفية ، مع استبعاد الدليل الأصل (..):

cd /directory/to/copy
cp -r * .[^.]* /destination/directory

إذا لم تستبعد الدليل الأصل ، فسينتهي بكافة محتويات .. في دليل وجهتك أيضًا.

2
mch

يعمل هذا على نسخ جميع الملفات والدلائل باستثناء الدلائل المخفية بشكل متكرر من الدليل الحالي إلى أي مكان:

cp -rf * ^.* 
0
Seeeve

لنسخ الملفات التي تبدأ بنقطة ، قم فقط باستخدام cp. * الهدف /

الأسهل هو أن تفعل الأمر cp مرتين.

كما بيتر Eisentraut sais القواعد المعتادة التزوير لا تشمل .. و. (جلالة ، كيفية إنهاء هذه الجملة؟ ؛)

مجرد استخدام -r لجعله متكرر و- i لجعل cp اسأل عما إذا كنت تريد حقًا الكتابة فوق ملف.

cp -ri /backup/olduser/* /newuser/
cp -ri /backup/olduser/.* /newuser/
0
gaqzi