| کانال گنو/لینوکس |
رفتن به کانال در Telegram
⭕️ کانال گنو/لینوکس دولوپیکس 💠 دولوپیکس | جامعه توسعهدهندگان ایرانی 💎 @Developix 🚀 Developix.ir 📌 پشتیبانی و تبلیغات: @DevelopixSupport
نمایش بیشتر2 841
مشترکین
-124 ساعت
-87 روز
-1630 روز
آرشیو پست ها
2 842
🌱 بعضی وقتها فقط یک بار فراموشکردن Backup مساوی است با از دست دادن چند ماه کار. روی سرور یا حتی روی لپتاپ خودت میشود با یک Bash Script خیلی ساده، Backup منظم و خودکار داشت.
اینجا ایده این است:
• یک دایرکتوری مهم (مثلاً
/var/www یا پروژههای شخصی) را هر روز Backup بگیریم.
• فایل Backup را با نام دارای تاریخ ذخیره کنیم.
• با cron کاری کنیم اسکریپت خودش اجرا شود، بدون اینکه هر بار یادت باشد.
آموزش اصلی و مفصلترش را میشود توی مستند رسمی GNU Bash و man pages دید:
• Bash Reference Manual: gnu.org/software/bash/manual/bash.html
• راهنمای crontab(5): روی سیستم خودت دستور man 5 crontab را بزن.
بیایید یک اسکریپت Backup خیلی قابلفهم بسازیم 👇
#!/usr/bin/env bash
SOURCE_DIR="/var/www"
BACKUP_DIR="/backup/www"
DATE="$(date +"%Y-%m-%d_%H-%M")"
BACKUP_FILE="${BACKUP_DIR}/www-backup-${DATE}.tar.gz"
mkdir -p "${BACKUP_DIR}"
tar -czf "${BACKUP_FILE}" "${SOURCE_DIR}" 2>"${BACKUP_DIR}/backup-error.log"
if [[ $? -eq 0 ]]; then
echo "[OK] Backup created: ${BACKUP_FILE}"
else
echo "[ERROR] Backup failed. Check log file." >&2
fi
این اسکریپت:
• با mkdir -p مطمئن میشود دایرکتوری Backup وجود دارد.
• با tar -czf یک فایل فشرده .tar.gz میسازد.
• خطاها را داخل backup-error.log میریزد که بعداً راحتتر بشود دیباگ کرد.
نکتهی ریز ولی مهم: برای redirect کردن stderr از >&2 استفاده شده؛ این را Bash Manual دقیق توضیح داده و روی شلهای سازگار با POSIX هم رفتار قابل پیشبینی دارد.
حالا کافی است اسکریپت را مثلاً توی /usr/local/sbin/backup-www.sh ذخیره کنی و اجراییاش کنی:
sudo chmod +x /usr/local/sbin/backup-www.sh
بعد با crontab -e مثلاً این خط را اضافه کن تا هر روز ساعت ۳ صبح Backup بگیرد:
0 3 * * * /usr/local/sbin/backup-www.sh >> /var/log/backup-www.log 2>&1
لطفاً قبل از اینکه روی سرور اصلی اجرا کنی، یک بار روی یک دایرکتوری تست امتحانش کن و مطمئن شو فضای دیسک کافی داری. Backup بدون تست Restore فقط یک توهم امنیت است 🙂
اگر مفید بود، روی سیستم خودت پیادهاش کن و با چند تغییر کوچک برای پروژهها و دایرکتوریهای خودت شخصیسازیاش کن.
🔖 #Linux #لینوکس #Linux #Bash #Backup #Cron #Shell #Sysadmin
👤 Developix
💎 Channel: @DevelopixLinux2 842
🧩 تا حالا یه بار اشتباهی یه پوشه مهم رو پاک کردی و بعدش فهمیدی بکاپ درستحسابی نداشتی؟ توی لینوکس خیلی راحت میشه با یه اسکریپت کوچیک Bash و یه cron job، بکاپگیری منظم و خودکار راه انداخت؛ بدون نیاز به ابزارهای سنگین.
ایده اینه: یه اسکریپت بنویسیم که از یه پوشه (مثلاً
/home/USER/projects) هر روز یه آرشیو فشرده بسازه و توی یه پوشه امن (مثلاً /backup) نگهداره، با تاریخ روی اسم فایل. این دقیقاً همون چیزیه که هزار تا بار تو سرورهای واقعی استفاده میشه.
برای جزئیات بیشتر میشه مستند رسمی Bash و دستور tar رو دید:
GNU Bash Manual
GNU tar Manual
👇 یه اسکریپت ساده و کاربردی:
#!/usr/bin/env bash
set -euo pipefail
SOURCE_DIR="$HOME/projects"
BACKUP_DIR="/backup"
DATE="$(date +"%Y-%m-%d_%H-%M")"
ARCHIVE_NAME="projects_backup_${DATE}.tar.gz"
mkdir -p "${BACKUP_DIR}"
tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" \
--exclude="*.log" \
--exclude="node_modules" \
-C "${SOURCE_DIR}" .
echo "Backup created at: ${BACKUP_DIR}/${ARCHIVE_NAME}"
چند نکته ریز ولی مهم:
🔹 set -euo pipefail کمک میکنه اسکریپت اگه جایی خطا شد نصفهنیمه ادامه نده.
🔹 --exclude ها باعث میشن چیزهای حجیم و بیمصرف (مثل node_modules) توی هر بکاپ تکرار نشن.
🔹 سوییچ -C توی tar میگه قبل از آرشیو کردن وارد اون دایرکتوری بشه؛ اینطوری ساختار داخل آرشیو تمیزتره.
بعد از ذخیره اسکریپت مثلاً به نام backup_projects.sh و اجرایی کردنش:
chmod +x backup_projects.sh
میشه با cron کاری کرد هر شب اتوماتیک اجرا بشه:
crontab -eو مثلاً این خط رو اضافه کرد:
0 2 * * * /home/USER/backup_projects.sh > /var/log/backup_projects.log 2>&1
این الگو بعداً خیلی راحت قابل گسترشه: میشه چند تا پوشه مختلف رو بکاپ گرفت، آرشیوها رو sync کرد روی یه سرور دیگه با rsync، یا حتی قبل از بکاپ گرفتن، تستهای پروژه رو اجرا کرد.
امتحانش کن روی یه پوشه غیرحساس، لاگ رو ببین، و کمکم این اسکریپت رو تبدیل کن به بخشی از workflow روزمرهات 😊
🔖 #Linux #لینوکس #Linux #Bash #Backup #Shell #Cron #GNU
👤 Developix
💎 Channel: @DevelopixLinux2 842
Repost from کانال رسمی تک نت | Taknet
🚀 سرور اختصاصی با تنوع منابع برای هر نوع نیاز
⏺پورت اختصاصی
⏺آپلود رایگان
⏺تخفیف پلکانی ترافیک
⏺آپتایم 99.99%
⏺24 ساعت تست رایگان
⏺رائه IP مازاد
⏺پشتیبانی 24/7
⏺تحویل فوری
⏺ارائه سرویس Colocation
⏺بدون قطعی
⏺پرداخت ماهیانه
⏰ تعداد محدود – برای استفاده از این تخفیف ویژه سریع اقدام کن!
برای اطلاعات بیشتر و سفارش، تماس بگیر:
🔺 02191555530
💻 خرید سرور اختصاصی
2 842
خیلی وقتها تو ترمینال یه دستور طولانی مینویسیم، بعد میفهمیم فقط باید یه گزینهٔ کوچیک عوض میشد. لازم نیست کل دستور رو دوباره تایپ کنی؛ تاریخچهٔ Bash کلی میانبر خفن داره 👇
۱️⃣ اجرای آخرین دستور با sudo
یه دستور زدی، Permission denied خورد:
apt update
# Permission denied
بهجای نوشتن کل دستور با sudo:
sudo !!
!! همون آخرین دستوریه که اجرا کردی. خیلی سریع و کاربردی 😎
۲️⃣ تکرار آخرین دستور شروعشده با چند حرف
مثلاً چند بار از systemctl استفاده میکنی:
!systemctlاین آخرین دستوری که با
systemctl شروع شده رو دوباره اجرا میکنه.
۳️⃣ فقط آخرین آرگومان دستور قبلی
مثال ساده:
mkdir my_project
cd !$
!$ آخرین آرگومان دستور قبلیه (اینجا: my_project). برای کار با مسیرهای طولانی فوقالعادهست.
۴️⃣ ویرایش آخرین دستور با fc
اگه دستور قبلی طولانی بود و فقط یه بخشش رو میخوای عوض کنی:
fcآخرین دستور رو تو ادیتور پیشفرض باز میکنه (مثلاً vim)، ادیت کن و سیو کن، خودش اجرا میشه. این ترفندها تقریباً تو همهٔ توزیعهای گنو/لینوکس که از Bash استفاده میکنن کار میکنه و تو کار روزمره کلی زمان ذخیره میکنه ⏱️ برای جزییات بیشتر تاریخچهٔ Bash: GNU Bash Manual – History Interaction 🔖 #Linux #لینوکس #Linux #GNU #Bash #Terminal #Shell #Productivity 👤 Developix 💎 Channel: @DevelopixLinux
2 842
امروز که خواستم یوزرنیم رو توی دبیان عوض کنم، یه نکته مهم یاد گرفتم! مثال جالبش اینه که توی حرکت بخوای دنده ماشین عوض کنی بدون خلاص کردن و کلاچ گرفتن! معلومه که گیربکس خورد میشه:)🫨
چرا نباید وقتی با همون یوزر لاگین هستی اسمشو عوض کنی؟
فرض کن الان با یوزر abolfazl وارد سیستم شدی.
اگه همون موقع با دستور usermod اسمشو عوض کنی:
- یهدفعه پروسههای در حال اجرا قاطی میکنن
- دسکتاپ، پنجرهها یا کل سشن ممکنه بپره
- حتی ممکنه دسترسی به پوشهی home به هم بریزه
خب، با root چی؟
حتی اگه بریم توی root هم مستقیم این کارو بکنیم، باز کار تمیز نیست.
چون هر چیزی که هنوز با اسم قدیمی یوزر کار میکنه، بعدش خطا میده.
راه درست و حرفهای چیه؟
بهترین کار اینه که یه یوزر دیگه داشته باشی (مثلاً backupuser) که:
- sudo داشته باشه
- باهاش لاگین کنی
- و از اون یوزر، اسم یوزر اصلی رو عوض کنی
مراحلش خیلی سادهست:
1. اول با یوزر پشتیبان وارد شو:
su - backupuser
2. اگه خواستی، رمز یوزر قبلی رو عوض کن:
sudo passwd abolfazl
3. بعد اسم یوزر، گروه و پوشه home رو تغییر بده:
sudo usermod -l ali abolfazl
sudo groupmod -n ali abolfazl
sudo usermod -d /home/ali -m ali
sudo chown -R ali:ali /home/ali
با این روش چی میشه؟
- سیستم سالم میمونه؛ دسکتاپ و home نمیپره؛ میشه یه یوزر امن داری که از بیرون بتونی تغییرات سیستمی بدی
🔖 #Linux #لینوکس
👤 Abolfazl Asadi
💎 Channel: @DevelopixLinux
2 842
🔹 خیلی وقتها تو لینوکس دیسک پر میشود و باید سریع بفهمیم کدوم دایرکتوریها بیشترین فضا را گرفتهاند. یک ابزار ساده و پیشفرض که تقریبا روی همه دیستروها هست: du.
📦 نمایش حجم دایرکتوریها بهصورت خوانا (MB/GB):
du -h --max-depth=1 /var
🔹 توضیح سریع سوییچها:
- -h ⬅ خروجی human-readable مثل 10M ،2.3G
- --max-depth=1 ⬅ فقط یک لایه زیر دایرکتوری مشخص را نشان میدهد
مثلا برای بررسی هوم یوزر:
du -h --max-depth=1 ~ | sort -h
✅ اینجا از sort -h استفاده شده تا خروجی بر اساس حجم، از کم به زیاد مرتب شود. انتهای خروجی، دایرکتوریهای چاق و پردردسر مشخص میشوند و میشود راحت تصمیم گرفت کجا را تمیز کنیم.
💡 چند نکته کاربردی:
• برای نادیده گرفتن بعضی مسیرها:
du -h --max-depth=1 --exclude="*.git" ~
• برای جمع کل یک مسیر (بدون جزئیات):
du -sh /var/log
این ترکیب ساده du و sort تقریبا روی همه سرورها و دسکتاپها جواب میدهد و اولین قدم خوب برای عیبیابی پر شدن دیسک است.
📚 مرجع: man7.org - du(1)
🔖 #Linux #لینوکس #Linux #Terminal #du #DiskUsage #GNU
👤 Developix
💎 Channel: @DevelopixLinux2 842
یکی از واقعیترین کارهای روزمره روی سرورهای لینوکسی: بکاپ گرفتن منظم از فایلهای مهم 📦
اینجا یک سناریوی ساده ولی کاملاً کاربردی:
فرض کن روی سرور، دایرکتوری
/var/www داری (مثل سایتها یا اپهای وب) و میخوای هر روز یک آرشیو فشرده ازش در /backup ذخیره شود، با تاریخ روی اسم فایل، بدون دخالت دست ⏱️
ایده کلی:
• یک اسکریپت Bash مینویسیم که:
– دایرکتوری مقصد بکاپ را اگر نبود بسازد
– از دایرکتوری سورس، یک فایل .tar.gz با تاریخ روز درست کند
– لاگ ساده بنویسد
• بعد با cron تنظیمش میکنیم که هر شب اجرا شود.
این کار کاملاً مطابق مستندات رسمی است:
• GNU tar manual
• GNU Bash manual
• راهنمای crontab(5) با اجرای man 5 crontab
نمونه اسکریپت ساده و عملی 👇
#!/usr/bin/env bash
set -euo pipefail
SOURCE_DIR="/var/www"
BACKUP_DIR="/backup"
DATE="$(date +"%Y-%m-%d_%H-%M")"
ARCHIVE_NAME="www-backup-${DATE}.tar.gz"
LOG_FILE="${BACKUP_DIR}/backup.log"
mkdir -p "${BACKUP_DIR}"
tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" "${SOURCE_DIR}" 2>&1 | \
tee -a "${LOG_FILE}"
echo "[${DATE}] Backup created: ${ARCHIVE_NAME}" >> "${LOG_FILE}"
نکات مهم 💡
• حتماً روی سرور بهجای مسیرهای تستی، مسیر واقعی پروژهات را بگذار.
• یوزری که اسکریپت را اجرا میکند باید دسترسی خواندن روی /var/www و نوشتن روی /backup داشته باشد.
• گزینههای set -euo pipefail کمک میکند اسکریپت اگر به خطا خورد، بیسروصدا ادامه ندهد؛ این عادت خیلی خوبی در اسکریپتنویسی است.
اتومات کردن با cron 🕒
بعد از ذخیره اسکریپت مثلاً در /usr/local/bin/auto-backup.sh و اجرای:
chmod +x /usr/local/bin/auto-backup.sh
crontab -e
داخل ویرایشگر cron این خط را اضافه کن تا هر روز ۳ بامداد بکاپ بگیرد:
0 3 * * * /usr/local/bin/auto-backup.sh >/dev/null 2>&1
برای تست، یکبار دستی اجرا کن تا مطمئن شوی همه چیز درست است و حجم فایلهای بکاپ بیجهت بزرگ نمیشود. اگر حجم خیلی بالا بود، میشود الگوی حذف بکاپهای قدیمی (مثلاً قدیمیتر از ۷ روز) را هم به همین اسکریپت اضافه کرد.
چنین اسکریپتهای کوچک واقعاً توی کار روزمره sysadmin بودن معجزه میکنند؛ همین امروز روی یک دایرکتوری تست اجرا کن و نتیجه را ببین 🚀
🔖 #Linux #لینوکس #Linux #Bash #Backup #cron #sysadmin #shell_scripting
👤 Developix
💎 Channel: @DevelopixLinux2 842
📌 مانیتور کردن پر شدن دیسک با یک اسکریپت سادهٔ Bash
خیلی وقتها روی سرور یا حتی سیستم شخصی، ناگهان / پر میشود و سرویسها شروع میکنند به خطا دادن. یک اسکریپت سبک Bash میتواند هر چند دقیقه یکبار وضعیت دیسک را چک کند و قبل از فاجعه، بهت خبر بدهد. 🤝
ایده این است:
• از
df برای گرفتن درصد استفادهٔ دیسک استفاده میکنیم.
• اگر درصد از یک حد خاص (مثلاً ۸۰٪) بالاتر رفت، پیام هشدار در لاگ مینویسیم یا ایمیل میزنیم.
• اسکریپت را با cron زمانبندی میکنیم.
مستندات رسمی df و bash هم همیشه همراهت است:
GNU df manual
GNU Bash Reference Manual
👇 این یک نمونه اسکریپت مینیمال و عملی است که روی اکثر توزیعها (Debian, Ubuntu, Fedora و ...) کار میکند:
#!/usr/bin/env bash
THRESHOLD=80
MOUNT_POINT="/"
usage=$(df -P "$MOUNT_POINT" | awk 'NR==2 {gsub("%","", $5); print $5}')
if [ "$usage" -ge "$THRESHOLD" ]; then
logger -t disk-monitor "Disk usage on $MOUNT_POINT is ${usage}% (threshold: ${THRESHOLD}%)"
fi
🧩 توضیح بخشهای مهم:
• df -P / خروجی portable میدهد (برای اسکریپتها امنتر است).
• با awk سطر دوم و ستون پنج را میگیریم که همان درصد استفاده است؛ علامت ٪ را با gsub حذف میکنیم.
• اگر استفاده از حد THRESHOLD بیشتر شد، با logger یک پیام به syslog ارسال میکنیم. این پیام را بعداً با journalctl یا /var/log/syslog میشود دید.
برای اجرا کردن دورهای، مثلاً هر ۵ دقیقه، یک cron job اضافه میشود:
crontab -eو بعد یک خط مثل این داخلش قرار میدهی:
*/5 * * * * /usr/local/bin/disk-monitor.sh >/dev/null 2>&1
نکتهٔ مفید: روی سرورهای production معمولاً این اسکریپت را کمی گسترش میدهند؛ مثلاً اگر درصد زیاد شد، خروجی df و du -sh /var/* را هم ذخیره میکنند تا بعداً راحتتر root cause را پیدا کنند یا حتی با ابزارهایی مثل mailx ایمیل هشدار میفرستند.
این از آن اسکریپتهای کوچک ولی نجاتبخش است؛ روی یک سرور تست یا ماشین مجازی امتحانش کن و مطابق نیاز خودت شخصیسازیاش کن. 😎
🔖 #Linux #لینوکس #Linux #Bash #Shell #Sysadmin #Monitoring #Cron #GNU
👤 Developix
💎 Channel: @DevelopixLinux2 842
تو این پست میریم سراغ یه کار کاملاً عملی که هر ادمین لینوکسی sooner or later بهش نیاز داره: یه اسکریپت Backup ساده با Bash و زمانبندی با cron.
سناریو رو اینطوری فرض کن 👇
یه سرور داری که توی مسیر
/var/www پروژههات هست و میخوای هر شب یه Backup فشرده ازش گرفته بشه و بره توی یه پوشهی جدا، بدون اینکه یادت بمونه هر شب دستی این کارو انجام بدی.
ایدهی کلی:
• استفاده از tar برای ساخت فایل آرشیو فشرده
• نامگذاری Backup براساس تاریخ (برای ردیابی راحت)
• زمانبندی با cron که خودش اتوماتیک اجراش کنه
مستندات رسمی که این ایده روشهاش رو پوشش میده:
• GNU tar Manual
• GNU Bash Reference Manual
• man crontab(5)
حالا بریم سراغ یه نمونهی واقعی 👇
#!/usr/bin/env bash
SRC_DIR="/var/www"
BACKUP_DIR="/backup/www"
DATE="$(date +"%Y-%m-%d_%H-%M")"
ARCHIVE_NAME="www-backup-${DATE}.tar.gz"
mkdir -p "${BACKUP_DIR}"
tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" "${SRC_DIR}"
find "${BACKUP_DIR}" -type f -name "www-backup-*.tar.gz" -mtime +7 -delete
این اسکریپت:
• از SRC_DIR یه آرشیو .tar.gz میسازه ✅
• توی BACKUP_DIR ذخیرهاش میکنه ✅
• Backupهای قدیمیتر از ۷ روز رو پاک میکنه تا دیسک پر نشه ✅
یه نکتهی ریز: اگر مسیرها رو عوض میکنی، حواست باشه یوزری که اسکریپت رو اجرا میکنه، permission لازم برای خوندن SRC_DIR و نوشتن تو BACKUP_DIR رو داشته باشه.
حالا برای زمانبندی با cron (مثلاً هر روز ساعت ۳ صبح):
۱) اسکریپت رو مثلاً بذار تو /usr/local/bin/www-backup.sh و اجراپذیرش کن:
chmod +x /usr/local/bin/www-backup.sh
۲) crontab رو برای یوزر root باز کن:
crontab -e۳) این خط رو اضافه کن:
0 3 * * * /usr/local/bin/www-backup.sh >/var/log/www-backup.log 2>&1
با این کار هر شب ساعت ۳ صبح، Backup گرفته میشه و خروجی هم توی لاگ ذخیره میشه تا بعداً اگر مشکلی شد، دیباگش راحت باشه.
برای شروع همین اسکریپت ساده فوقالعاده کاربردیه؛ بعداً میتونی encrypt، انتقال روی remote (مثلاً با rsync+ssh) یا Notification هم بهش اضافه کنی.
امتحانش کن روی یه پوشهی تستی و اگر مفید بود برای بقیهی لینوکسیها هم بفرست 🌱
🔖 #Linux #لینوکس #Linux #GNU #Bash #Backup #cron #Shell_Scripting #Sysadmin
👤 Developix
💎 Channel: @DevelopixLinux2 842
گاهی وسط کار یادت میافته که از پوشهی پروژههات Backup نگرفتی و استرس Crash یا خراب شدن Disk میاد سراغت. روی گنو/لینوکس خیلی راحت میشه با یه Bash Script ساده و ابزارهای استاندارد مثل cron این کار رو اتومات کرد.
ایده اینه 👇
هر شب مثلاً ساعت ۲ بامداد، از یک پوشه (مثلاً
/home/user/projects) یه Archive فشرده گرفته بشه و توی یه مسیر امن ذخیره بشه. اگر هم خواستی بعداً میتونی اون رو روی یک Remote Server با scp یا rsync بفرستی.
مبنای کار هم چیزیه که توی مستندات رسمی Bash و manpageهای tar و cron هست (مثلاً man tar و man 5 crontab).
این یه Script خیلی ساده و در عین حال کاربردی برای Backup روزانه است:
#!/usr/bin/env bash
set -euo pipefail
SOURCE_DIR="/home/user/projects"
BACKUP_DIR="/home/user/backups"
mkdir -p "${BACKUP_DIR}"
DATE="$(date +%F_%H-%M-%S)"
ARCHIVE_NAME="projects_${DATE}.tar.gz"
/usr/bin/tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" "${SOURCE_DIR}"
echo "Backup created at ${BACKUP_DIR}/${ARCHIVE_NAME}"
چند نکتهی ریز ولی مهم 👇
• از set -euo pipefail استفاده شده تا Script روی خطاها Stop کنه و اشتباهات Silent نمونه.
• از date برای گذاشتن Timestamp روی اسم فایل استفاده میکنیم تا هر Backup فایل جدا داشته باشه و قبلیها Overwrite نشن.
• مسیر کامل /usr/bin/tar توی Script استفاده شده، چون وقتی با cron اجرا میشه، PATH معمولاً خیلی محدودتر از Shell عادیه.
حالا برای اتومات کردن با cron:
۱️⃣ فایل رو مثلاً با اسم backup_projects.sh ذخیره کن و اجراییاش کن:
chmod +x ~/backup_projects.sh
۲️⃣ cron کاربر رو ویرایش کن:
crontab -e۳️⃣ این خط رو اضافه کن تا هر روز ساعت ۲ صبح اجرا بشه:
0 2 * * * /home/user/backup_projects.sh >> /home/user/backup.log 2>&1
Log رو هم توی backup.log نگه میداریم که اگر جایی مشکل شد، با یک tail -f backup.log راحت ببینی چی شده.
برای جزئیات بیشتر حتماً یه نگاه به مستندات رسمی بنداز:
GNU Bash Manual
crontab(5) man page
این مدل Scriptهای کوچیک واقعاً توی کار روزمرهی Sysadminها و Devها نجاتبخشه؛ از پروژههای شخصی گرفته تا Serverهای جدی. همین امروز روی یه پوشهی آزمایشی امتحانش کن و بعد آرومآروم Backupت رو حرفهایتر کن 😉
🔖 #Linux #لینوکس #GNU/Linux #bash #backup #cron #shell_scripting #sysadmin
👤 Developix
💎 Channel: @DevelopixLinux2 842
روی اکثر توزیعهای مدرن مثل Debian, Ubuntu, Fedora و Arch الان systemd مدیر سرویس (init system) اصلیه. اگر باهاش راحت نباشیم، دیباگ کردن سرویسها و اسکریپتهامون خیلی عذابآوره.
تو این پست یه سناریوی واقعی رو میگیریم: اجرای یه اسکریپت ساده بهعنوان سرویس، طوری که:
• بعد از هر بوت خودش اجرا بشه 🔁
• اگر کرش کرد خودکار دوباره بالا بیاد 💥➡️🚀
• لاگهاش تو
journalctl قابل پیگیری باشه 📝
سناریو:
فرض کن یه اسکریپت Python داری که هر ۱۰ ثانیه وضعیت دیسک رو لاگ میگیره یا مثلا یه worker ساده برای کارهای background. نمیخوای هر دفعه خودت اجراش کنی؛ میخوای مثل بقیه سرویسها با systemctl کنترلش کنی.
قدم ۱: ساخت اسکریپت
مثال ساده؛ یه اسکریپت که هر ۱۰ ثانیه زمان سیستم رو لاگ مینویسه:
sudo mkdir -p /opt/time-logger
sudo nano /opt/time-logger/time-logger.sh
محتوای فایل:
#!/usr/bin/env bash
LOGFILE=/var/log/time-logger.log
while true; do
echo "$(date '+%Y-%m-%d %H:%M:%S') - time-logger is alive" \
| sudo tee -a "$LOGFILE" >/dev/null
sleep 10
done
بعد:
sudo chmod +x /opt/time-logger/time-logger.sh
sudo touch /var/log/time-logger.log
sudo chown $(whoami):$(whoami) /var/log/time-logger.log
قدم ۲: ساخت Unit برای systemd
حالا یه سرویس systemd تعریف میکنیم:
sudo nano /etc/systemd/system/time-logger.service
محتوا:
[Unit] Description=Simple Time Logger Service After=network.target [Service] Type=simple ExecStart=/opt/time-logger/time-logger.sh Restart=always RestartSec=5 User=%i [Install] WantedBy=multi-user.targetبرای سادهتر شدن میتونی
User رو مستقیم بذاری مثلاً:
User=yourusernameقدم ۳: Reload و فعالسازی سرویس
sudo systemctl daemon-reload
sudo systemctl enable --now time-logger.service
sudo systemctl status time-logger.service
اگر active (running) دیدی یعنی سرویس درست بالا آمده. لاگها:
journalctl -u time-logger.service -f
یا مستقیماً فایل:
tail -f /var/log/time-logger.log
نکات کاربردی
• تو داکیومنت رسمی systemd میتونی تمام گزینهها رو ببینی:
systemd.service man page
• برای هر تغییری در فایل .service یادت نره sudo systemctl daemon-reload بزنی.
• اگر سرویس کرش میکنه، systemctl status و journalctl معمولا سرنخ خیلی خوبی میدن.
این الگو همون چیزیه که برای اجرای bot ها، worker ها، اسکریپتهای backup و کلی کار دیگه روی سرورهای واقعی استفاده میشه. یه بار خوب یاد گرفته بشه، نصف دردسرهای «سرویسم خودبهخود میخوابه» حل میشه 🙂
امتحانش کن روی یه ماشین تست یا VM و هر جا مفید بود، توی سرورهات استفاده کن.
🔖 #Linux #لینوکس #Linux #systemd #Bash #Shell #Sysadmin #Service #GNU/Linux
👤 Developix
💎 Channel: @DevelopixLinux2 842
📦 پیشرفت کلی کپی با rsync و کاهش اولویت با nice
یک مشکل رایج: هنگام همگامسازی یا بکاپگیری از فایلهای بزرگ، نمایش پیشرفت کلی نداریم و فرآیند روی سیستم تولید بار میکند. این ترفند ساده هم پیشرفت کلی را نشان میدهد و هم با کاهش اولویت CPU بار را کمتر میکند. ⚙️
ایده: از rsync با گزینه --info=progress2 برای نمایش درصد کل عملیات استفاده کنید و با nice اولویت پردازشی را بالا ببرید تا سیستم تعاملیتان کند نشود. 🛠️
نمونهٔ عملی (ایمن و قابل استفاده روی اکثر توزیعها):
nice -n 10 rsync -aHAX --delete --info=progress2 /home/ /mnt/backup/home/
نکات کوتاه اما کلیدی:
- /source/ با اسلش انتهایی پوشهٔ محتوا را همگامسازی میکند؛ بدون اسلش، پوشه بهعنوان زیرپوشه منتقل میشود. ↪️
- nice -n 10 اولویت پردازش را کم میکند (عدد بالاتر = اولویت کمتر). این باعث میشود عملیات سنگین کمتر روی تجربهٔ کاربر تاثیر بگذارد. 🧘♂️
- --info=progress2 وضعیت کل انتقال را به شکل درصد و سرعت کلی نشان میدهد؛ مفیدتر از --progress هنگام انتقال هزاران فایل. 📊
مواردی که باید مراقب باشید:
- اگر دستگاه ذخیرهسازی خارجی یا شبکهای دارید، سرعت به رابط و بار شبکه بستگی دارد؛ rsync فقط انتقال را مدیریت میکند. 🌐
- برای عملیات خیلی حساس به I/O میتوان از ionice هم استفاده کرد، اما بسته به کرنل و برنامهریز دیسک، تاثیر متفاوت خواهد بود.
در پایان: این ترکیب ساده سریعترین راه برای داشتن پیشرفت قابلفهم و کاهش تأثیر روی سیستم در حین بکاپگیری یا همگامسازی است. امتحانش کنید و بازخورد بگذارید — کاربردش در کارهای روزمره بسیار مفید است. ✅
منبع رسمی: rsync — official documentation
🔖 #Linux #لینوکس #rsync #backup #linux #terminal
👤 Developix
💎 Channel: @DevelopixLinux2 842
پشتیبانگیری خودکار با rsync + systemd ⏱️💾
یک مشکل واقعی: سایت یا سرور کمبود فضا نداره، ولی همیشه لازمه یک بکاپ سالم و قابل بازیابی داشته باشیم. این آموزش کوتاه نشون میده چطور با rsync و یک systemd timer بکاپهای افزایشی و قابل اتکا بسازیم—بدون cron پیچیده.
ایدههای کلیدی:
- rsync برای کپی افزایشی و حفظ مجوزها و لینکها عالیه (man: rsync) ✅
- systemd.timer جایگزین مدرن و قابل اطمینان برای زمانبندی است (مستندات: systemd.timer) ⏱️
- استفاده از --link-dest برای بکاپهای فضایدوست و قابل بازگشت.
نمونه عملی: اسکریپت بکاپ و واحد systemd. این مثال از /var/www به /backup بکاپ میگیرد و آخرین نسخه را با لینک حفظ میکند.
#!/bin/bash
set -euo pipefail
SRC="/var/www/"
DEST="/backup/$(hostname)-$(date +%F)"
RSYNC_OPTS="-aAXv --delete --link-dest=/backup/latest --exclude=/cache"
mkdir -p "$DEST"
rsync $RSYNC_OPTS "$SRC" "$DEST/"
rm -f /backup/latest && ln -s "$DEST" /backup/latest
و فایلهای systemd:
# /etc/systemd/system/backup.service
[Unit]
Description=Daily rsync backup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-rsync.sh
# /etc/systemd/system/backup.timer
[Unit]
Description=Daily backup timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
نکات عملی:
- قبل از فعالسازی با rsync --dry-run تست کنید.
- مطمئن شید مجوزها و مالک فایلها در مقصد درست هستند (خصوصاً SELinux یا ACL).
- برای جزئیات بیشتر به مستندات Bash و systemd مراجعه کنید: Bash و Debian Timers guide.
- اشتباه رایج: استفاده از --delete بدون بررسی قبلی میتونه داده حذفشده را از بین ببره — همیشه تست کنید.
این روش ساده، قابل اتکا و قابل تنظیم برای سرورها و VPSهاست. امتحانش کن و اگه مفید بود، به بقیه هم معرفی کن 😉
🔖 #Linux #لینوکس #rsync #systemd #backup #linux #bash
👤 Developix
💎 Channel: @DevelopixLinux2 842
#unixporn
یه اسکرینشات از دسکتاپ فعلیتون بههمراه مشخصاتش بفرستید صبح شنبهای یکم زیبایی ببینیم 😎👇
2 842
⚠️از بالا رفتن قیمت دلار لذت ببر.⚠️
🛑 عجیب و غریب هم نیست. فقط به جای کارفرمای ایرانی با کارفرمای خارجی کار کن. چجوریشم بیا از کسی که تجربه داره و الان برای صدها نفر کارآفرینی کرده بپرس.
📆یکشنبه ۱۴۰۳/۰۲/۲۳ ⏰ساعت ۱۹:۰۰ وبینار رایگان چالش های کار با کارفرمای خارجی
🚨🎁راستی به مناسبت تولد تکانش کلی خبرها و هدایای هیجان انگیز هم دارن که فقط سالی یه بار اتفاق میوفته.🎁🎂
لینک ثبت نام وبینار:
https://links.etekanesh.com/dgpXlSf3Cd
👨💻مدرس: علیرضا قیمتی
پشتیبانی: @Tekanesh_support
کانال تلگرام: https://t.me/TekaneshAcademy
2 842
🌀 هایپرلند (Hyperland) یک مدیرپنجره Tiling مدرن بر پایه Wayland و wlroots است که تجربه انیمیشنهای نرم و روان و محیط فانتزی را به WM های Tiling در سیستمهای گنو/لینوکسی میآورد.
💧 اگر کاربر گنو/لینوکس باشید، تقریبا بعید است که اسم مدیرپنجرههای Tiling و محبوبترین آنها یعنی i3wm را نشنیده باشید، مدیرپنجره Hyperland نیز از ساختار مشابه i3wm استفاده میکند و تمامی قابلیت های i3wm را بهصورت کامل در Wayland و بر پایه wlroots ممکن میکند.
💎 Channel: @DevelopixLinux
2 842
فرصتی بینظیر برای متخصصین لینوکس و دواپس🔥
نوروز امسال، کندو برای متخصصین لینوکس و دواپس بوتکمپهای ویژهای برگزار میکنه.
دورههای پیشنهادی:
Zabbix, lpic1, Splunk 1&2, Ansible, …
✅ تا ۳۰٪ تخفیف ویژه
✅ پرداخت اقساطی
⚡️ یادگیری سریع و فشرده
+ ۲ کارگاه تخصصی رایگان به عنوان هدیه
مشاهده کمپها و اطلاعات بیشتر:
Cando.ac/linux
♾ دریافت مشاوره تخصصی و رایگان :
👩💻@CANDOm_jani
👩💻@CANDOF_Ebrahimi
👩💻@CANDOZ_Qoliha
👩💻@Cando_mehdipour
👨💻@CANDOazizpour
👩💻@CANDO_Nikooravan
✅ آموزشگاه مهندسی کندو برترین آموزشگاه IT ایران
📞 02192004381 (شهرستان)
📞 021-43810 (تماس از تهران)
📢 @CanDo_ac
2 842
🔄 توزیع Asahi Linux یکی از متفاوتترین توزیع های گنو/لینوکسی به لحاظ ساختار و معماری است
این توزیع مبتنی بر معماری Arm64 هست و برای اجرا شدن روی چیپ های سری M اپل توسعه داده شده است
نسخه های مختلفی از این توزیع مبتنی بر آرچ و فدورا وجود دارند، ولی در حال حاضر توسعه نسخه آرچ متوقف شده است و تنها توزیع قابل نصب فدورا است
اگر لپتاپ های مکبوک یا کامپیوتر های مک سری M از اپل دارید، Asahi Linux میتواند تجربه جالبی از یک توزیع گنو/لینوکسی روی سختافزار اپل را برای شما رقم بزند
▫️البته باید توجه داشت که معماری این توزیع بر بستر Arm64 است و تعداد قابل توجهی از برنامهها سازگار با این معماری نیستند
🌎 Website
💎 Channel: @DevelopixLinux
2 842
Repost from N/a
هفتمین صبحانه کاری ابرها (تهران)
🍮 قهوه، صبحانه، ارائه و گفتوگوی کاری در کنار متخصصین
🎤 ارائه تجربهمحور توسط حمید پورجم
⏰ زمان: جمعه ۲۷ بهمن ۱۴۰۲، ساعت ۹ تا ۱۲ صبح
📌 مکان: شهرک غرب، هرمزان، پیروزان جنوبی، کوچه پنجم، مرکز همایشهای رعد
کد تخفیف اختصاصی:
DevelopixLinux-10لینک ثبتنام👇👇 https://abrh.ir/edj
2 842
راهنمای تنظیم و استفاده از کرونجاب برای اجرای اسکریپتها در زمانهای خاص
در دنیای مدیریت سیستم و اتوماسیون، کرونجابها ابزاری اساسی برای اجرای وظایف در بازههای زمانی مشخص میباشند. آیا میخواهید نگهداری روزانه انجام دهید، اطلاعات خود را پشتیبانگیری کنید یا اسکریپتهای سفارشی خود را اجرا کنید، کرونجابها یک راهحل انعطافپذیر و کارآمد فراهم میکنند. در این راهنما، ما به مباحث پایه کرونجاب، نحوه تنظیم آنها و بهترین روشها برای اطمینان از اتوماسیون بیدردسر میپردازیم.
درک کرون:
کرون یک برنامه زمانبندی وظایف در سیستمهای عامل مانند یونیکس است. این به کاربران اجازه میدهد تا وظایف (دستورات یا اسکریپتها) را به طور دورهای در زمانها، تاریخها یا بازههای زمانی مشخص اجرا کنند. دستور کرون یک رشته است که شامل دقایق، ساعتها، روزهای ماه، ماهها و روزهای هفته است.
تنظیم یک کرونجاب:
برای ایجاد یک کرونجاب جدید از دستور crontab استفاده کنید. با اجرای دستور زیر، ویرایشگر کرون باز میشود:
crontab -e
این دستور ویرایشگر متن پیشفرض را باز میکند. یک خط جدید برای تعیین برنامه زمانی و دستوری که باید اجرا شود، اضافه کنید. سینتکس به صورت زیر است:
* * * * * command-to-be-executed
مثال:
برای اجرای یک اسکریپت هر روز ساعت 3:30 صبح، ورودی کرونجاب به شکل زیر خواهد بود:
30 3 * * * script.sh
بررسی و مدیریت کرونجابها:
برای مشاهده کرونجابهای فعلی، از دستور زیر استفاده کنید:
crontab -l
برای حذف تمام کرونجابها:
crontab -r
💎 Channel: @DevelopixLinux