السلام عليكم
اخواني محترفي نظام التشغيل لينكس
لدي تمرين عن shell script و اريد المساعدة كوني لا زالت مبتدئ بنظام لينكس
و جزاكم الله خير على المساعدة
هذا نص التمرين :
Write a shell script named daily-backup.sh that does the following:
-Discovers all users defined on the system excluding system and services users.
-For each of these users, locates the home directory and create an compressed archive for this directory (.tar.gz).
-Creates a global archive that contains all archived users home directories and save it in /var/backup.
-The script should be daily run at 1AM and for each execution, the global archive name should reflect the date of the archive creation.
-The shell script should produce a log file under /var/log/daily-backup.log to which will be added each day the following information: date of script execution, result of each user home directory archiving (archive name, size, and archive process result code) and same information about the global archive file.
-The script should send a summary report in email to root@localhost at the end of each execution containing date, total time of execution, encountered problems
أخي الكريم،
انا خبرتي متواضعة في الـ Shell Scripting حيث أنّني لا أعرف كيفيّة تنفيذ الأوامر بالضّبط ولكنني أعرف الصورة العامّة والتي يظهر لي من قراءتي للتمرين أنّ التمرين سهل وبسيط وليس معقّد ويمكنك تعلّم كل خطوة منه بكل يُسر وسهولة.
يمكنك تقسيم كل مطلوب من المطاليب كأمر منفصل وتعلّم كيفية تطبيقه، ثمّ جمع جميع المطاليب في ملفّ واحد.
أولاً يجب عليك إنشاء ملف تسميه كما هو مذكور في التمرين daily-backup.sh. وحرفي الـ sh بعد النقطة في نهاية الإسم يدلان على أنّ هذا هو Shell Script. لاحظ أنّه بعد إنشاء الملف يجب أن يكون لديك كمستخدم صلاحيات Execute للملف. إذا لم يكن لديك صلاحيّة Execute فقط بإعطاء الملف هذه الصلاحيّة لتتمكّن من تنفيذه.
-Discovers all users defined on the system excluding system and services users.
هناك أكثر من طريقة لذلك. فيمكنك إحصاء عدد المجلدات داخل المجلد /home حيث يشير كل مجلد إلى مستخدم.
ويمكنك كذلك الاستعانة بالمجلد /etc/passwd لمعرفة عدد المستخدمين الذين لديهم home directory.
راجع الرابط : https://www.linuxquestions.org/linux...all_your_USERs
بعد ذلك لكل home directory للمستخدمين قم بعمل ضغط لكل home directory في مجلد منفصل من نوع .tar.gz.
بعد ذلك اضغط الملفات التي قمتَ بضغطها آنفاً في مجلد مضغوط واحد وخزنه في المجلد /var/backup.
قم بعمل توقيت لهذه العملية بحيث تتم كل يوم الساعة 1 صباحاً. ( المقصود بهذه العملية هو ضغط كل Home directory للمستخدمين في ملف مضغوط ثمّ ضغط الملفات المضغوطة هذه جميعها في ملف مضغوط واحد ويتم تخزينه في /var/backup ).
تسمية الملف الذي تقوم بتخزينه يجب أن تراعي فيها أن يكون الاسم يحتوي على تاريخ إنشاء هذا الملف المضغوط.
بعد عمليّة الضغط والتخزين في المكان المذكور أعلاه يجب أن يتم التعديل على الملف /var/log/daily-backup.log ( قم بإنشاءه إن لم يكن موجوداً ). وفي كل مرة نأخذ باك أب فإننا نكتب في هذا الملف معلومات عن الباك أب وهي ( كما هو مطلوب ) :
date of script execution, result of each user home directory archiving (archive name, size, and archive process result code) and same information about the global archive file
أي، نكتب تاريخ تنفيذ السكريبت، ونتيجة ضغط كل Home directory للمستخدمين ( اسم المجلد، حجمه، والكود الذي يعكس نتيجة الضغط [ فعند تمام العملية بنجاح ينتج رقم، وفي حال فشلها ينتج رقم آخر. هذا هو المقصود بالكود ].
وكذلك كتابة نفس المعلومات للمجلد المضغوط الرئيسي الذي سنضع فيه كل المجلدات المضغوطة الفرعيّة.
والمطلوب التّالي هو :
The script should send a summary report in email to root@localhost at the end of each execution containing date, total time of execution, encountered problems
أي أنّه بعد تمام عمليّة تنفيذ السكريبت فإنّه يجب أن يُرسل تلقائياً إيميل ملخّص لعملية الـ باك أب إلى العنوان : root@localhost. يحتوي هذا الإيميل الملخّص على التاريخ، والوقت الذي استغرقته عمليّة الباك أب. وأي مشاكل ظهرت أثناء عملية الباك أب [ إن كان هناك مشاكل].
هذا هو أخي العزيز ملخّص للمطلوب. وهو سهل وليس بصعب. كل ما عليكَ هو اتّباع كل خطوة وإتمامها ثمّ الإنتقال للخطوة التّالية.
إذا لم تستطع او لم تعرف كيفيّة حل إحدى الخطوات فيمكنك البحث في الانترنت أو سؤال الأخوة هنا ( السؤال عن خطوة واحدة فقط لتكون أكثر دقّة ). وبعد إتمامك لهذه الخطوة بنجاح يمكنك الانتقال للخطوة التي تليها.
أتمنى لك التوفيق أخي الكريم واعذرني إن لم أمتلك من الخبرة ما أجيبُ بهِ سؤالكَ كاملاً.
المفضلات