بسم الله و الحمد لله و الصلاة و السلام على رسل الله و آله و أصحابه و من إتبع هداه
طريقة نسخ الملفات على لينكس
الطريقة بإستخدام سطر الأوامر
الأداة المستخدم cp
كيف نقوم بنسخ الملفات على أنظمة لينكس و الأنظمة التي مثل يونكس و الأنظمة التي مثل بي إس دي.كيف نقوم بعمل نسخة ثانية لملف.
و كيف نقوم بنسخ الملفات و المجلدات على الطرفية و صدفة باش.
هذا ما سنتطرق له في هذا الموضوع.
طريقة عمل الأداة
شكل عمل الأداة من داخل دليل باش
NAME
cp - copy files and directories
SYNOPSIS
cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
DESCRIPTION
Copy SOURCE to DEST, or multiple
SOURCE(s) to DIRECTORY.
بهذا المقطع توجد معلومات
حول الأداة.
الجزء الأول :
تعريف بسيط عنها. و هو أنها أداة تنسخ الملفات و المجلدات.
الجزء الثاني :
طريقة إستخدام الأداة:
الأمر ثم مسافة ثم إسم الملف المصدر ثم مسافة ثم إسم المسار الهدف.
بإختصار هذا هو شكل طيقة عمل الأداة.
سنمر لكثير من التفاصيل حول هذه العملية.
الجزء الأخير:
يعطي شرح عن ما تقوم به الأداة.
أمثلة:
لتقوم بنسخ ملف إسمه file1.txt
إلى ملف آخر بإسم
File_1.txt
داخل نفس المسار. نقوم بالتالي:
الملفات الموجودة حاليا بالمسار
ls -R
.:
Desint2 file1.txt file3.txt
Destin1 file2.txt
./Desint2:
file3.txt
./Destin1:
file1.txt file2.txt file3.txt
نطبق الأمر:
cp file1.txt File_1.txt
نتأكد هل العملية نجحت
ls -R
.:
Desint2 File_1.txt file2.txt
Destin1 file1.txt file3.txt
نريد تغير الإسم. نختار أي إسم نريد بعد نهاية المسار المستهدف .سواء ملف أو مجلد.
cp file1.txt file1_new.txt
cp -R Dir1.txt Dir1_new.txt
كما يمكننا نسخ ملفات متعددة إلى مجلد
cp file1.txt file2.txt file3.txt Destin1/
علامة / الموجودة بآخر المجلد
Destin1
ليست ضرورية.
نتأكد من وجود الملفات
ls -R Destin1/ Destin1/:
file1.txt file2.txt file3.txt
ملاحظة مهمة يجب التنبه لها أو البحث لفهمها جيدا.
عندها سيزول إشكال نسخ الملفات من مسار إلى مسار آخر.
و هي فهم الفرق بين
absolute path
و
relative path
لن أخوض في شرحها. و لكن بإختصار
absolute
تعني مسار كامل للملف.غالبا يبدأ بعلامة /
و مسار
relative
طريق بديل للوصول للملف.
المسار يبدأ بأشكال مختلفة دون علامة
/
ربما نقطة أو رمز.
مثال لنسخ ملف عن طريق absolute path
echo $PWD
/home/samir/temp/cp_lab
ls
Desint2 File_1.txt file2.txt
Destin1 file1.txt file3.txt
هذا هو المسار الحالي و يوجد به هذه الملفات.
echo $HOME
/home/samir/
و هذا مسار منزل المستخدم.
لنقل أننا نريد نقل ملف
file2.txt
إلى منزل المستخدم .داخل مجلد
Samir-Temp-Dir
cp /home/samir/temp/cp_lab/file3.txt /home/samir/Samir-Temp-Dir/
تعطي المسار الكامل لمصدر الملف و تعطي أيضا المسار الكامل للمسار الهدف.
بعبارة أخرى تطبق الأمر
pwd
من داخل المسار الموجود به الملف المصدر.ستعطيك absolute path
لذلك الملف.
و تقوم بنفس الشيء للمسار المستهدف.
و الطريقة الأخرى مختصرة
cp file3.txt ~/Samir-Temp-Dir
هذه العلامة ~ تعني المنزل
أو هكذا
cp file3.txt $HOME/Samir-Temp-Dir
كلها تعمل.
لنقول للصدفة باش إطبع لنا ما يحدث أثناء عملية النسخ. نستخدم لاحقة
-v
cp -v node_modules/plex/README.md ~/temp/cp_lab/
'node_modules/plex/README.md' -> '/
/home/samir/temp/cp_lab/README.md'
و لنسخ الملفات مع الإبقاء خصائصها و أقصد المعلومات المتعلقة بالملفات أو ما يسمى
attributes
أي تاريخ الملفات و الصلاحيات و المجموعة و ما إلى ذلك.
نستخدم لاحقة
-p
لنفرض على أداة النسخ
أن تبقي على تلك المعلومات أثناء عملية النسخ و لا تغيرها.
مثال:
cp -p *.txt ~/temp/letx/
سيقوم بنسخ جميع الملفات الموجودة بالمسار الحالي و التي تنتهي بصيغة
txt
و نقلها إلى
~/temp/letx/
كما يمكننا وضع علامة نجمة مكان صيغة الملف. لننسخ جميع لملفات التي تبدأ بإسم معين
file*
مثال :
cp file* ~/temp/
و من الخاصيات المهمة لهذه الأداة.
لاحقة
-i
تعطيك خيار التأكيد قبل الكتابة على ملف أو مجلد.
مثال
cp -i temp/letx/file1.txt temp/text_dir/
cp: overwrite 'temp/text_dir/file1.txt'?
كنا يمكن إضافتها لملف bashrc
cp() { command cp -i “${@}”; }
و من الخاصيات المهمة أيضا.لاحقة
-R
تمكنك من نسخ المجلدات و محتوياتها.
مثال بدونها
cp plex/ letx/
cp: -r not specified; omitting directory 'plex/'
رسالة خطأ.
مع تلك اللاحقة :
$ cp -vR plex/ letx/
'plex/IBM-Plex-Serif/fonts/split/woff2' -> 'letx/IBM-Plex-Serif/fonts/split/woff2'
لاحقة -r
تقوم بنفس الشيء و أيضا لاحقة -a
الفرق أنها لا تغير معلومات الميتاداتا للملفات.
و منها أيضا لاحقة
-u
تنسخ فقط الملفات الحديثة من المصدر.إذا وجدت ملفات أحدث منها في المسار المستهدف.لا تقوم بالنسخ.
cp -upa home/samir/*.pdf ~/Documents/Ebooks/
كما يمكن تنسيق الأداة مع أدواة أخرى. للقيام بعمليات معقدة.
مثال
find / -iname "*vault*" -exec cp -apu {} ~/Data/ \;
أو إستخدام
for loop.
و من الخاصيات المهمة. لاحقة
-b backup
عمل نسخة إحتياطية للملفات قبل نسخها.
cp -Rb /etc/* etc_backup
إلى هنا ينتهي الموضوع.