یک اسکریپت Bash بنویسید که از یک پوشه مشخص پشتیبان فشردهشده با نام شامل تاریخ و زمان ایجاد کند و فقط آخرین N نسخه پشتیبان را نگهداری نماید.
13.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:54 0.0
برای حل این مسئله از دستورات استاندارد خط فرمان مثل tar برای فشردهسازی، date برای تولید نشان زمانی در نام فایل و متغیرها برای تعیین مسیر منبع، مسیر ذخیرهسازی و مقدار N استفاده کنید؛ پس از ایجاد فایل پشتیبان با tar -czf، لیست فایلهای پشتیبان در پوشه مقصد را بر اساس نام یا زمان مرتب کرده و قدیمیها را با استفاده از find یا ترکیب ls/sort/head/rm حذف کنید تا فقط N نسخه باقی بماند. نکات: اسکریپت را قابل اجرا کنید (chmod +x)، وضعیت خروجی دستورات را بررسی کرده و برای زمانبندی اجرا از crontab استفاده کنید؛ قبل از اجرا روی دادههای واقعی، اسکریپت را با پوشههای نمونه و مجوزهای مناسب تست کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای اسمگذاری از نشانزمانی خوانا مانند YYYYMMDD-HHMMSS استفاده کنید و همیشه مسیرها و نام فایلها را داخل کوتیشن قرار دهید تا با فاصله یا کاراکترهای ویژه مشکل پیش نیاید. پس از اجرای tar -czf وضعیت خروجی را بررسی کنید و ابتدا فایل فشرده را در یک نام موقت بسازید و سپس با mv اتمیک به مقصد منتقل کنید تا نسخههای ناقص باقی نمانند. حذف نسخههای قدیمی را با روشهای امن مثل لیستدهی null-terminated (find -print0) یا sort بر اساس نام/زمان انجام دهید و مطمئن شوید متغیر N حتماً یک عدد مثبت است. برای جلوگیری از اجرای همزمان از flock یا pidfile استفاده کنید و قبل از قرار دادن در crontab روی پوشههای نمونه و با سطوح دسترسی مناسب کاملاً تست کنید.
گزارش