یک اسکریپت Bash بنویسید که از یک پوشه مشخص پشتیبان فشرده‌شده با نام شامل تاریخ و زمان ایجاد کند و فقط آخرین N نسخه پشتیبان را نگهداری نماید.

13.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:54

0.0

برای حل این مسئله از دستورات استاندارد خط فرمان مثل tar برای فشرده‌سازی، date برای تولید نشان زمانی در نام فایل و متغیرها برای تعیین مسیر منبع، مسیر ذخیره‌سازی و مقدار N استفاده کنید؛ پس از ایجاد فایل پشتیبان با tar -czf، لیست فایل‌های پشتیبان در پوشه مقصد را بر اساس نام یا زمان مرتب کرده و قدیمی‌ها را با استفاده از find یا ترکیب ls/sort/head/rm حذف کنید تا فقط N نسخه باقی بماند. نکات: اسکریپت را قابل اجرا کنید (chmod +x)، وضعیت خروجی دستورات را بررسی کرده و برای زمان‌بندی اجرا از crontab استفاده کنید؛ قبل از اجرا روی داده‌های واقعی، اسکریپت را با پوشه‌های نمونه و مجوزهای مناسب تست کنید.

توسط پژوهشگر در 198 روز قبل ساعت 01:54
دسته بندی ها: Bash Scripting Bash Scripting for beginner
arash در 198 روز قبل ساعت 01:55

برای اسم‌گذاری از نشان‌زمانی خوانا مانند YYYYMMDD-HHMMSS استفاده کنید و همیشه مسیرها و نام فایل‌ها را داخل کوتیشن قرار دهید تا با فاصله یا کاراکترهای ویژه مشکل پیش نیاید. پس از اجرای tar -czf وضعیت خروجی را بررسی کنید و ابتدا فایل فشرده را در یک نام موقت بسازید و سپس با mv اتمیک به مقصد منتقل کنید تا نسخه‌های ناقص باقی نمانند. حذف نسخه‌های قدیمی را با روش‌های امن مثل لیست‌دهی null-terminated (find -print0) یا sort بر اساس نام/زمان انجام دهید و مطمئن شوید متغیر N حتماً یک عدد مثبت است. برای جلوگیری از اجرای همزمان از flock یا pidfile استفاده کنید و قبل از قرار دادن در crontab روی پوشه‌های نمونه و با سطوح دسترسی مناسب کاملاً تست کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری