گاهی وسط کار یادت میافته که از پوشهی پروژههات Backup نگرفتی و استرس Crash یا خراب شدن Disk میاد سراغت. روی گنو/لینوکس خیلی راحت میشه با یه Bash Script ساده و ابزارهای استاندارد مثل cron این کار رو اتومات کرد.
ایده اینه 👇
هر شب مثلاً ساعت ۲ بامداد، از یک پوشه (مثلاً
مبنای کار هم چیزیه که توی مستندات رسمی Bash و manpageهای
این یه Script خیلی ساده و در عین حال کاربردی برای Backup روزانه است:
چند نکتهی ریز ولی مهم 👇
• از
• از
• مسیر کامل
حالا برای اتومات کردن با cron:
۱️⃣ فایل رو مثلاً با اسم
۲️⃣ cron کاربر رو ویرایش کن:
۳️⃣ این خط رو اضافه کن تا هر روز ساعت ۲ صبح اجرا بشه:
Log رو هم توی
برای جزئیات بیشتر حتماً یه نگاه به مستندات رسمی بنداز:
GNU Bash Manual
crontab(5) man page
این مدل Scriptهای کوچیک واقعاً توی کار روزمرهی Sysadminها و Devها نجاتبخشه؛ از پروژههای شخصی گرفته تا Serverهای جدی. همین امروز روی یه پوشهی آزمایشی امتحانش کن و بعد آرومآروم Backupت رو حرفهایتر کن 😉
🔖 #Linux #لینوکس #GNU/Linux #bash #backup #cron #shell_scripting #sysadmin
👤 Developix
💎 Channel: @DevelopixLinux
ایده اینه 👇
هر شب مثلاً ساعت ۲ بامداد، از یک پوشه (مثلاً
/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: @DevelopixLinux
❤6👍2👎1
تو این پست میریم سراغ یه کار کاملاً عملی که هر ادمین لینوکسی sooner or later بهش نیاز داره: یه اسکریپت Backup ساده با Bash و زمانبندی با cron.
سناریو رو اینطوری فرض کن 👇
یه سرور داری که توی مسیر
ایدهی کلی:
• استفاده از tar برای ساخت فایل آرشیو فشرده
• نامگذاری Backup براساس تاریخ (برای ردیابی راحت)
• زمانبندی با cron که خودش اتوماتیک اجراش کنه
مستندات رسمی که این ایده روشهاش رو پوشش میده:
• GNU tar Manual
• GNU Bash Reference Manual
• man crontab(5)
حالا بریم سراغ یه نمونهی واقعی 👇
این اسکریپت:
• از
• توی
• Backupهای قدیمیتر از ۷ روز رو پاک میکنه تا دیسک پر نشه ✅
یه نکتهی ریز: اگر مسیرها رو عوض میکنی، حواست باشه یوزری که اسکریپت رو اجرا میکنه، permission لازم برای خوندن
حالا برای زمانبندی با cron (مثلاً هر روز ساعت ۳ صبح):
۱) اسکریپت رو مثلاً بذار تو
۲) crontab رو برای یوزر root باز کن:
۳) این خط رو اضافه کن:
با این کار هر شب ساعت ۳ صبح، Backup گرفته میشه و خروجی هم توی لاگ ذخیره میشه تا بعداً اگر مشکلی شد، دیباگش راحت باشه.
برای شروع همین اسکریپت ساده فوقالعاده کاربردیه؛ بعداً میتونی encrypt، انتقال روی remote (مثلاً با rsync+ssh) یا Notification هم بهش اضافه کنی.
امتحانش کن روی یه پوشهی تستی و اگر مفید بود برای بقیهی لینوکسیها هم بفرست 🌱
🔖 #Linux #لینوکس #Linux #GNU #Bash #Backup #cron #Shell_Scripting #Sysadmin
👤 Developix
💎 Channel: @DevelopixLinux
سناریو رو اینطوری فرض کن 👇
یه سرور داری که توی مسیر
/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: @DevelopixLinux
👍4❤1
📌 مانیتور کردن پر شدن دیسک با یک اسکریپت سادهٔ Bash
خیلی وقتها روی سرور یا حتی سیستم شخصی، ناگهان / پر میشود و سرویسها شروع میکنند به خطا دادن. یک اسکریپت سبک Bash میتواند هر چند دقیقه یکبار وضعیت دیسک را چک کند و قبل از فاجعه، بهت خبر بدهد. 🤝
ایده این است:
• از
• اگر درصد از یک حد خاص (مثلاً ۸۰٪) بالاتر رفت، پیام هشدار در لاگ مینویسیم یا ایمیل میزنیم.
• اسکریپت را با
مستندات رسمی
GNU df manual
GNU Bash Reference Manual
👇 این یک نمونه اسکریپت مینیمال و عملی است که روی اکثر توزیعها (Debian, Ubuntu, Fedora و ...) کار میکند:
🧩 توضیح بخشهای مهم:
•
• با
• اگر استفاده از حد
برای اجرا کردن دورهای، مثلاً هر ۵ دقیقه، یک cron job اضافه میشود:
و بعد یک خط مثل این داخلش قرار میدهی:
نکتهٔ مفید: روی سرورهای production معمولاً این اسکریپت را کمی گسترش میدهند؛ مثلاً اگر درصد زیاد شد، خروجی
این از آن اسکریپتهای کوچک ولی نجاتبخش است؛ روی یک سرور تست یا ماشین مجازی امتحانش کن و مطابق نیاز خودت شخصیسازیاش کن. 😎
🔖 #Linux #لینوکس #Linux #Bash #Shell #Sysadmin #Monitoring #Cron #GNU
👤 Developix
💎 Channel: @DevelopixLinux
خیلی وقتها روی سرور یا حتی سیستم شخصی، ناگهان / پر میشود و سرویسها شروع میکنند به خطا دادن. یک اسکریپت سبک 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: @DevelopixLinux
🔥3❤2
یکی از واقعیترین کارهای روزمره روی سرورهای لینوکسی: بکاپ گرفتن منظم از فایلهای مهم 📦
اینجا یک سناریوی ساده ولی کاملاً کاربردی:
فرض کن روی سرور، دایرکتوری
ایده کلی:
• یک اسکریپت Bash مینویسیم که:
– دایرکتوری مقصد بکاپ را اگر نبود بسازد
– از دایرکتوری سورس، یک فایل
– لاگ ساده بنویسد
• بعد با
این کار کاملاً مطابق مستندات رسمی است:
• GNU tar manual
• GNU Bash manual
• راهنمای
نمونه اسکریپت ساده و عملی 👇
نکات مهم 💡
• حتماً روی سرور بهجای مسیرهای تستی، مسیر واقعی پروژهات را بگذار.
• یوزری که اسکریپت را اجرا میکند باید دسترسی خواندن روی
• گزینههای
اتومات کردن با cron 🕒
بعد از ذخیره اسکریپت مثلاً در
داخل ویرایشگر cron این خط را اضافه کن تا هر روز ۳ بامداد بکاپ بگیرد:
برای تست، یکبار دستی اجرا کن تا مطمئن شوی همه چیز درست است و حجم فایلهای بکاپ بیجهت بزرگ نمیشود. اگر حجم خیلی بالا بود، میشود الگوی حذف بکاپهای قدیمی (مثلاً قدیمیتر از ۷ روز) را هم به همین اسکریپت اضافه کرد.
چنین اسکریپتهای کوچک واقعاً توی کار روزمره sysadmin بودن معجزه میکنند؛ همین امروز روی یک دایرکتوری تست اجرا کن و نتیجه را ببین 🚀
🔖 #Linux #لینوکس #Linux #Bash #Backup #cron #sysadmin #shell_scripting
👤 Developix
💎 Channel: @DevelopixLinux
اینجا یک سناریوی ساده ولی کاملاً کاربردی:
فرض کن روی سرور، دایرکتوری
/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: @DevelopixLinux
👍8❤1🔥1
🔹 خیلی وقتها تو لینوکس دیسک پر میشود و باید سریع بفهمیم کدوم دایرکتوریها بیشترین فضا را گرفتهاند. یک ابزار ساده و پیشفرض که تقریبا روی همه دیستروها هست: du.
📦 نمایش حجم دایرکتوریها بهصورت خوانا (MB/GB):
🔹 توضیح سریع سوییچها:
- -h ⬅ خروجی human-readable مثل 10M ،2.3G
- --max-depth=1 ⬅ فقط یک لایه زیر دایرکتوری مشخص را نشان میدهد
مثلا برای بررسی هوم یوزر:
✅ اینجا از sort -h استفاده شده تا خروجی بر اساس حجم، از کم به زیاد مرتب شود. انتهای خروجی، دایرکتوریهای چاق و پردردسر مشخص میشوند و میشود راحت تصمیم گرفت کجا را تمیز کنیم.
💡 چند نکته کاربردی:
• برای نادیده گرفتن بعضی مسیرها:
• برای جمع کل یک مسیر (بدون جزئیات):
این ترکیب ساده
📚 مرجع: man7.org - du(1)
🔖 #Linux #لینوکس #Linux #Terminal #du #DiskUsage #GNU
👤 Developix
💎 Channel: @DevelopixLinux
📦 نمایش حجم دایرکتوریها بهصورت خوانا (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: @DevelopixLinux
❤5
امروز که خواستم یوزرنیم رو توی دبیان عوض کنم، یه نکته مهم یاد گرفتم! مثال جالبش اینه که توی حرکت بخوای دنده ماشین عوض کنی بدون خلاص کردن و کلاچ گرفتن! معلومه که گیربکس خورد میشه:)🫨
چرا نباید وقتی با همون یوزر لاگین هستی اسمشو عوض کنی؟
فرض کن الان با یوزر 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
چرا نباید وقتی با همون یوزر لاگین هستی اسمشو عوض کنی؟
فرض کن الان با یوزر 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
👍15
خیلی وقتها تو ترمینال یه دستور طولانی مینویسیم، بعد میفهمیم فقط باید یه گزینهٔ کوچیک عوض میشد. لازم نیست کل دستور رو دوباره تایپ کنی؛ تاریخچهٔ Bash کلی میانبر خفن داره 👇
۱️⃣ اجرای آخرین دستور با sudo
یه دستور زدی، Permission denied خورد:
بهجای نوشتن کل دستور با sudo:
۲️⃣ تکرار آخرین دستور شروعشده با چند حرف
مثلاً چند بار از
این آخرین دستوری که با
۳️⃣ فقط آخرین آرگومان دستور قبلی
مثال ساده:
۴️⃣ ویرایش آخرین دستور با fc
اگه دستور قبلی طولانی بود و فقط یه بخشش رو میخوای عوض کنی:
آخرین دستور رو تو ادیتور پیشفرض باز میکنه (مثلاً vim)، ادیت کن و سیو کن، خودش اجرا میشه.
این ترفندها تقریباً تو همهٔ توزیعهای گنو/لینوکس که از Bash استفاده میکنن کار میکنه و تو کار روزمره کلی زمان ذخیره میکنه ⏱️
برای جزییات بیشتر تاریخچهٔ Bash:
GNU Bash Manual – History Interaction
🔖 #Linux #لینوکس #Linux #GNU #Bash #Terminal #Shell #Productivity
👤 Developix
💎 Channel: @DevelopixLinux
۱️⃣ اجرای آخرین دستور با 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
❤14👍3🔥3
Forwarded from کانال رسمی تک نت | Taknet
⏰ تعداد محدود – برای استفاده از این تخفیف ویژه سریع اقدام کن!
برای اطلاعات بیشتر و سفارش، تماس بگیر:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🧩 تا حالا یه بار اشتباهی یه پوشه مهم رو پاک کردی و بعدش فهمیدی بکاپ درستحسابی نداشتی؟ توی لینوکس خیلی راحت میشه با یه اسکریپت کوچیک Bash و یه cron job، بکاپگیری منظم و خودکار راه انداخت؛ بدون نیاز به ابزارهای سنگین.
ایده اینه: یه اسکریپت بنویسیم که از یه پوشه (مثلاً
برای جزئیات بیشتر میشه مستند رسمی Bash و دستور
GNU Bash Manual
GNU tar Manual
👇 یه اسکریپت ساده و کاربردی:
چند نکته ریز ولی مهم:
🔹
🔹
🔹 سوییچ
بعد از ذخیره اسکریپت مثلاً به نام
میشه با cron کاری کرد هر شب اتوماتیک اجرا بشه:
و مثلاً این خط رو اضافه کرد:
این الگو بعداً خیلی راحت قابل گسترشه: میشه چند تا پوشه مختلف رو بکاپ گرفت، آرشیوها رو sync کرد روی یه سرور دیگه با
امتحانش کن روی یه پوشه غیرحساس، لاگ رو ببین، و کمکم این اسکریپت رو تبدیل کن به بخشی از workflow روزمرهات 😊
🔖 #Linux #لینوکس #Linux #Bash #Backup #Shell #Cron #GNU
👤 Developix
💎 Channel: @DevelopixLinux
ایده اینه: یه اسکریپت بنویسیم که از یه پوشه (مثلاً
/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: @DevelopixLinux
👍1
🌱 بعضی وقتها فقط یک بار فراموشکردن Backup مساوی است با از دست دادن چند ماه کار. روی سرور یا حتی روی لپتاپ خودت میشود با یک Bash Script خیلی ساده، Backup منظم و خودکار داشت.
اینجا ایده این است:
• یک دایرکتوری مهم (مثلاً
• فایل Backup را با نام دارای تاریخ ذخیره کنیم.
• با
آموزش اصلی و مفصلترش را میشود توی مستند رسمی GNU Bash و man pages دید:
• Bash Reference Manual: gnu.org/software/bash/manual/bash.html
• راهنمای
بیایید یک اسکریپت Backup خیلی قابلفهم بسازیم 👇
این اسکریپت:
• با
• با
• خطاها را داخل
نکتهی ریز ولی مهم: برای redirect کردن stderr از
حالا کافی است اسکریپت را مثلاً توی
بعد با
لطفاً قبل از اینکه روی سرور اصلی اجرا کنی، یک بار روی یک دایرکتوری تست امتحانش کن و مطمئن شو فضای دیسک کافی داری. Backup بدون تست Restore فقط یک توهم امنیت است 🙂
اگر مفید بود، روی سیستم خودت پیادهاش کن و با چند تغییر کوچک برای پروژهها و دایرکتوریهای خودت شخصیسازیاش کن.
🔖 #Linux #لینوکس #Linux #Bash #Backup #Cron #Shell #Sysadmin
👤 Developix
💎 Channel: @DevelopixLinux
اینجا ایده این است:
• یک دایرکتوری مهم (مثلاً
/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: @DevelopixLinux
👍2
یه نیاز خیلی معمول: میخوای توی سرور یا سیستم خودت از یه دایرکتوری مهم (مثلاً پروژههات یا تنظیمات) بهطور منظم Backup بگیری، بدون اینکه هر بار یادت باشه دستی این کار رو بکنی.
اینجا از چیزهایی استفاده میکنیم که روی تقریباً همهٔ توزیعهای GNU/Linux هست: Bash، دستور tar و سرویس cron. همهچی ساده، قابل فهم و مستند توی man pages و مستندات رسمی.
🔹 ایدهٔ کار
یک اسکریپت Bash مینویسیم که:
- از یک دایرکتوری مشخص، آرشیو فشرده میسازه
- توی اسم فایل Backup تاریخ میذاره
- Backupهای قدیمیتر از n روز رو پاک میکنه
- بعد هم با cron زمانبندیش میکنیم
این مدل اسکریپت رو راحت میشه بعداً برای پوشههای مختلف، یا حتی انتقال روی remote با ssh، گسترش داد.
📦 نمونه اسکریپت Backup
مثال زیر از /home/user/projects بکاپ میگیره و توی /backup/local ذخیره میکنه. مسیرها رو طبق سیستم خودت عوض کن.
چند نکتهٔ مهم:
- از
- توی دستور
- دستور
مستندات همهٔ اینها توی man pages هست:
⏰ زمانبندی با cron
بعد از ذخیرهٔ اسکریپت مثلاً توی
و قابلاجرا کردنش:
ورود به ویرایشگر cron کاربر:
و اضافهکردن یک خط برای اجرای Backup هر روز ساعت ۳ صبح:
اینجوری هم اسکریپت هر شب خودکار اجرا میشه، هم لاگش رو داری برای وقتی چیزی خراب شد.
این مدل Backup ساده برای خیلی سناریوهای روزمره (سرور خانگی، VPS کوچک، لپتاپ کاری) کاملاً جواب میده و بعداً میشه با ابزارهایی مثل rsync یا ssh راحتترش کرد.
امتحانش روی یک دایرکتوری تست کمحجم، و نگاهکردن به خروجی tar و لاگ cron، بهترین راهه که قبل از استفادهٔ جدی مطمئن بشی همهچی طبق انتظار کار میکنه. 😉
🔖 #Linux #لینوکس #Linux #Bash #Backup #cron #Shell #Sysadmin
👤 Developix
💎 Channel: @DevelopixLinux
اینجا از چیزهایی استفاده میکنیم که روی تقریباً همهٔ توزیعهای GNU/Linux هست: Bash، دستور tar و سرویس cron. همهچی ساده، قابل فهم و مستند توی man pages و مستندات رسمی.
🔹 ایدهٔ کار
یک اسکریپت Bash مینویسیم که:
- از یک دایرکتوری مشخص، آرشیو فشرده میسازه
- توی اسم فایل Backup تاریخ میذاره
- Backupهای قدیمیتر از n روز رو پاک میکنه
- بعد هم با cron زمانبندیش میکنیم
این مدل اسکریپت رو راحت میشه بعداً برای پوشههای مختلف، یا حتی انتقال روی remote با ssh، گسترش داد.
📦 نمونه اسکریپت Backup
مثال زیر از /home/user/projects بکاپ میگیره و توی /backup/local ذخیره میکنه. مسیرها رو طبق سیستم خودت عوض کن.
#!/usr/bin/env bash
set -euo pipefail
SRC_DIR="/home/user/projects"
DEST_DIR="/backup/local"
RETENTION_DAYS=7
DATE="$(date +"%Y-%m-%d_%H-%M-%S")"
ARCHIVE_NAME="projects-${DATE}.tar.gz"
mkdir -p "${DEST_DIR}"
# ساخت آرشیو فشرده
tar -czf "${DEST_DIR}/${ARCHIVE_NAME}" -C "${SRC_DIR}" .
# پاککردن بکاپهای قدیمی
find "${DEST_DIR}" -type f -name "projects-*.tar.gz" -mtime +"${RETENTION_DAYS}" -delete
چند نکتهٔ مهم:
- از
set -euo pipefail استفاده شده تا اسکریپت روی خطا متوقف بشه؛ این توی اسکریپتهای سیستمی خیلی کمک میکنه.- توی دستور
tar از -C استفاده شده تا ساختار داخل آرشیو تمیز و بدون مسیرهای عجیب باشه.- دستور
find با -mtime بر اساس سن فایلها (به روز) پاکسازی میکنه.مستندات همهٔ اینها توی man pages هست:
man tar
man find
man 5 crontab
⏰ زمانبندی با cron
بعد از ذخیرهٔ اسکریپت مثلاً توی
/usr/local/bin/backup-projects.shو قابلاجرا کردنش:
chmod +x /usr/local/bin/backup-projects.sh
ورود به ویرایشگر cron کاربر:
crontab -e
و اضافهکردن یک خط برای اجرای Backup هر روز ساعت ۳ صبح:
0 3 * * * /usr/local/bin/backup-projects.sh >> /var/log/backup-projects.log 2>&1
اینجوری هم اسکریپت هر شب خودکار اجرا میشه، هم لاگش رو داری برای وقتی چیزی خراب شد.
این مدل Backup ساده برای خیلی سناریوهای روزمره (سرور خانگی، VPS کوچک، لپتاپ کاری) کاملاً جواب میده و بعداً میشه با ابزارهایی مثل rsync یا ssh راحتترش کرد.
امتحانش روی یک دایرکتوری تست کمحجم، و نگاهکردن به خروجی tar و لاگ cron، بهترین راهه که قبل از استفادهٔ جدی مطمئن بشی همهچی طبق انتظار کار میکنه. 😉
🔖 #Linux #لینوکس #Linux #Bash #Backup #cron #Shell #Sysadmin
👤 Developix
💎 Channel: @DevelopixLinux
👍4❤1
Forwarded from کانال رسمی تک نت | Taknet
⏰ تعداد محدود – برای استفاده از این تخفیف ویژه سریع اقدام کن!
برای اطلاعات بیشتر و سفارش، تماس بگیر:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
خیلی وقتها روی سرور یا سیستم شخصی، چند تا فولدر مهم داریم (مثلاً ~/projects یا تنظیمات dotfiles) و همیشه میگیم «بعداً براش Backup میگیرم» و بعد… دیر میشه 🙂
امروز یه سناریوی کاملاً واقعی رو میگیریم: ساختن یک Backup روزانه از یه دایرکتوری مهم روی GNU/Linux با استفاده از Bash و ابزارهای استاندارد مثل tar و cron.
این دقیقاً همون چیزیه که توی GNU tar manual و راهنمای crontab(5) توضیح داده شده، فقط اینجا جمعوجور و عملیترش میکنیم 😎
ایدهٔ اصلی چیه؟
۱️⃣ با tar از یک دایرکتوری، آرشیو فشرده میگیریم.
۲️⃣ اسم فایل Backup رو طوری میذاریم که تاریخ توش باشه (برای نسخههای مختلف).
۳️⃣ با cron کاری میکنیم هر روز خودش اجرا بشه، بدون دخالت دست.
یک اسکریپت Bash ساده:
این اسکریپت:
• فولدر $HOME/projects رو توی $HOME/backups به صورت .tar.gz ذخیره میکنه.
• توی اسم فایل تاریخ و ساعت میذاره تا نسخهها قاطی نشن.
• Backupهای قدیمیتر از ۳۰ روز رو حذف میکنه که هارد پر نشه.
مسیرهای مطلق برای
خودکار کردن با cron ⏰
طبق man crontab، میتونیم این اسکریپت رو هر روز ساعت ۳ صبح اجرا کنیم. بعد از اینکه اسکریپت رو مثلاً به اسم
و این خط رو به crontab اضافه میکنیم:
فقط
یه نکتهٔ مهم: حتماً یک بار دستی اسکریپت رو اجرا کن و آرشیو رو باز کن تا مطمئن بشی دقیقاً همون چیزی رو که میخوای Backup میگیری.
این مدل Backup ساده، برای لپتاپ شخصی، سرور توسعه، یا حتی Raspberry Pi عالی جواب میده. نه ابزار پیچیده لازم داره، نه تنظیمات عجیب و غریب.
امتحانش کن، کمی برای نیاز خودت شخصیسازیش کن، و اگر بهدردت خورد برای بقیهٔ لینوکسیها هم بفرست 🌱
🔖 #Linux #لینوکس #GNU/Linux #Bash #Backup #cron #tar #Shell_Scripting #Sysadmin
👤 Developix
💎 Channel: @DevelopixLinux
امروز یه سناریوی کاملاً واقعی رو میگیریم: ساختن یک Backup روزانه از یه دایرکتوری مهم روی GNU/Linux با استفاده از Bash و ابزارهای استاندارد مثل tar و cron.
این دقیقاً همون چیزیه که توی GNU tar manual و راهنمای crontab(5) توضیح داده شده، فقط اینجا جمعوجور و عملیترش میکنیم 😎
ایدهٔ اصلی چیه؟
۱️⃣ با tar از یک دایرکتوری، آرشیو فشرده میگیریم.
۲️⃣ اسم فایل Backup رو طوری میذاریم که تاریخ توش باشه (برای نسخههای مختلف).
۳️⃣ با cron کاری میکنیم هر روز خودش اجرا بشه، بدون دخالت دست.
یک اسکریپت Bash ساده:
#!/usr/bin/env bash
SOURCE_DIR="$HOME/projects"
BACKUP_DIR="$HOME/backups"
DATE=$(date +"%Y-%m-%d_%H-%M")
mkdir -p "$BACKUP_DIR"
ARCHIVE_NAME="projects_backup_${DATE}.tar.gz"
# ایجاد آرشیو فشرده با tar
/usr/bin/tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" -C "$HOME" projects
# حذف Backupهای قدیمیتر از ۳۰ روز
/usr/bin/find "$BACKUP_DIR" -type f -name 'projects_backup_*.tar.gz' -mtime +30 -delete
این اسکریپت:
• فولدر $HOME/projects رو توی $HOME/backups به صورت .tar.gz ذخیره میکنه.
• توی اسم فایل تاریخ و ساعت میذاره تا نسخهها قاطی نشن.
• Backupهای قدیمیتر از ۳۰ روز رو حذف میکنه که هارد پر نشه.
مسیرهای مطلق برای
/usr/bin/tar و /usr/bin/find از توصیههای مرسوم sysadminهاست، مخصوصاً وقتی اسکریپت قراره از داخل cron اجرا بشه؛ چون PATH همیشه مثل محیط interactive نیست.خودکار کردن با cron ⏰
طبق man crontab، میتونیم این اسکریپت رو هر روز ساعت ۳ صبح اجرا کنیم. بعد از اینکه اسکریپت رو مثلاً به اسم
backup-projects.sh ذخیره و executable کردیم:chmod +x $HOME/bin/backup-projects.sh
crontab -e
و این خط رو به crontab اضافه میکنیم:
0 3 * * * /home/USERNAME/bin/backup-projects.sh > /home/USERNAME/backup.log 2>&1
فقط
USERNAME رو با یوزر خودت عوض کن. خروجی هم توی backup.log ذخیره میشه که اگر مشکلی پیش اومد، راحت لاگ رو چک کنی.یه نکتهٔ مهم: حتماً یک بار دستی اسکریپت رو اجرا کن و آرشیو رو باز کن تا مطمئن بشی دقیقاً همون چیزی رو که میخوای Backup میگیری.
این مدل Backup ساده، برای لپتاپ شخصی، سرور توسعه، یا حتی Raspberry Pi عالی جواب میده. نه ابزار پیچیده لازم داره، نه تنظیمات عجیب و غریب.
امتحانش کن، کمی برای نیاز خودت شخصیسازیش کن، و اگر بهدردت خورد برای بقیهٔ لینوکسیها هم بفرست 🌱
🔖 #Linux #لینوکس #GNU/Linux #Bash #Backup #cron #tar #Shell_Scripting #Sysadmin
👤 Developix
💎 Channel: @DevelopixLinux
❤5🔥1
Forwarded from ابر ویراک
ویراک کلود | تجربهی ابری بدون محدودیت ☁️🚀
🎁 ۲۰٪ شارژ هدیه روی اولین واریزی
مزیتهایی که واقعاً فرق میسازن:
⚡️ پهنای باند 980 مگ
🌐با IP مازاد
⏱️ راهاندازی فوری
💳 پرداخت ساعتی
🛡 پشتیبانی ۲۴/۷
💬 هر سوالی داشتی، تیم ما کنارتـه
✅ مناسب استارتاپها، تیمهای فنی، تا سازمانهای بزرگ
همین الان شروع کن و با حداکثر منابع، سریعتر رشد کن 👇🏻
📞 تماس سریع: 02191555530
🔗 https://virakcloud.com
🎁 ۲۰٪ شارژ هدیه روی اولین واریزی
مزیتهایی که واقعاً فرق میسازن:
⚡️ پهنای باند 980 مگ
🌐با IP مازاد
⏱️ راهاندازی فوری
💳 پرداخت ساعتی
🛡 پشتیبانی ۲۴/۷
💬 هر سوالی داشتی، تیم ما کنارتـه
✅ مناسب استارتاپها، تیمهای فنی، تا سازمانهای بزرگ
همین الان شروع کن و با حداکثر منابع، سریعتر رشد کن 👇🏻
📞 تماس سریع: 02191555530
🔗 https://virakcloud.com
❤2
بکاپ داشتن تا وقتی لازم نشه به چشم نمیاد 😅 ولی یه بار دیسک مشکل پیدا کنه، تازه میفهمیم rsync و cron چه نعمتین.
امروز یه سناریوی کاملاً عملی رو میبینیم: تنظیم بکاپ خودکار از پوشهی
منبع ایده و رفرنس:
Arch Wiki - Rsync
GNU Cron
💡 ایدهی کلی
یه اسکریپت Bash کوچیک مینویسیم که با
🔧 نصب و تست سریع rsync
روی اکثر distroها پیشفرض نصبه. اگه نبود:
Debian/Ubuntu:
Fedora:
یه تست ساده:
📝 اسکریپت بکاپ خودکار
فرض کنیم دیسک خارجیمون روی
چند نکتهی مهم:
•
•
•
•
اسکریپت رو مثلاً ذخیره کن توی:
و اجراییاش کن:
یه بار دستی اجراش کن که مطمئن شی درست کار میکنه:
⏰ زمانبندی با cron
برای root (چون معمولاً نیاز به دسترسی به همهی homeها داریم):
و این خط رو اضافه کن تا هر روز ۳ صبح اجرا شه:
توضیح سریع فرمت:
⚠️ چند تلهی معمول
• حتماً مطمئن شو دیسک روی
• قبل از اضافهکردن
✅ نتیجه
با چند خط اسکریپت و یه cron job ساده، هر شب یه بکاپ مرتب از home داری که فقط تغییرات رو sync میکنه و هم سریعتره هم کمحجمتر.
امتحانش کن روی یه پوشهی تست، لاگ رو ببین، بعد کمکم روی دیتای اصلیات پیاده کن و تجربهات رو با بقیه به اشتراک بذار 🌱
🔖 #Linux #لینوکس #Linux #Backup #rsync #cron #Bash #Sysadmin #Automation #GNU/Linux
👤 Developix
💎 Channel: @DevelopixLinux
امروز یه سناریوی کاملاً عملی رو میبینیم: تنظیم بکاپ خودکار از پوشهی
/home روی یه دیسک خارجی، فقط با ابزارهای استاندارد لینوکس (بدون هیچ نرمافزار فانتزی اضافی).منبع ایده و رفرنس:
Arch Wiki - Rsync
GNU Cron
💡 ایدهی کلی
یه اسکریپت Bash کوچیک مینویسیم که با
rsync فقط تغییرات رو کپی کنه (incremental backup) و با cron تنظیمش میکنیم هر شب خودش اجرا بشه.🔧 نصب و تست سریع rsync
روی اکثر distroها پیشفرض نصبه. اگه نبود:
Debian/Ubuntu:
sudo apt install rsync
Fedora:
sudo dnf install rsync
یه تست ساده:
rsync -avh /etc/ /tmp/etc-backup-test
📝 اسکریپت بکاپ خودکار
فرض کنیم دیسک خارجیمون روی
/mnt/backup مونت شده و میخوایم از /home بکاپ بگیریم.#!/usr/bin/env bash
SOURCE="/home/"
DEST="/mnt/backup/home-backup/"
LOGFILE="/var/log/home-backup.log"
# اگه مقصد نبود بساز
mkdir -p "$DEST"
# اجرای rsync با چند گزینهی مهم
rsync -avh \
--delete \
--exclude=".cache/" \
"$SOURCE" "$DEST" >> "$LOGFILE" 2>&1
چند نکتهی مهم:
•
-a : پرمیژنها، owner، زمانها و… رو حفظ میکنه (archive mode).•
-v و -h : خروجی خوانا و دوستداشتنیتر.•
--delete : فایلهایی که از /home حذف شدن، از بکاپ هم حذف میکنه؛ بکاپ رو sync نگه میداره. اگه میترسه چیزی پاک شه، اول بدون این گزینه تست کن.•
--exclude=".cache/" : کشهای بیمصرف رو نبره توی بکاپ.اسکریپت رو مثلاً ذخیره کن توی:
/usr/local/bin/home-backup.sh
و اجراییاش کن:
sudo chmod +x /usr/local/bin/home-backup.sh
یه بار دستی اجراش کن که مطمئن شی درست کار میکنه:
sudo /usr/local/bin/home-backup.sh
⏰ زمانبندی با cron
برای root (چون معمولاً نیاز به دسترسی به همهی homeها داریم):
sudo crontab -e
و این خط رو اضافه کن تا هر روز ۳ صبح اجرا شه:
0 3 * * * /usr/local/bin/home-backup.sh
توضیح سریع فرمت:
دقیقه ساعت روزِماه ماه روزِهفته⚠️ چند تلهی معمول
• حتماً مطمئن شو دیسک روی
/mnt/backup مونت شده؛ وگرنه ممکنه rsync توی خود دیسک root پوشه بسازه 😐• قبل از اضافهکردن
--delete همیشه یه بار بدون اون و با --dry-run تست کن:rsync -avh --dry-run SOURCE DEST
✅ نتیجه
با چند خط اسکریپت و یه cron job ساده، هر شب یه بکاپ مرتب از home داری که فقط تغییرات رو sync میکنه و هم سریعتره هم کمحجمتر.
امتحانش کن روی یه پوشهی تست، لاگ رو ببین، بعد کمکم روی دیتای اصلیات پیاده کن و تجربهات رو با بقیه به اشتراک بذار 🌱
🔖 #Linux #لینوکس #Linux #Backup #rsync #cron #Bash #Sysadmin #Automation #GNU/Linux
👤 Developix
💎 Channel: @DevelopixLinux
❤8👍1
🧠 مدیریت حرفهای تاریخچه دستورات با
گاهی یک دستور طولانی را اشتباه میزنی و فقط میخواهی همان را سریع اصلاح و دوباره اجرا کنی. بهجای پیمایش با کلید ↑ تا مرگ 😄، از builtin قوی Bash یعنی
✨ ایده:
✅ مثال ساده:
این دستور، آخرین کامند را در editor پیشفرض (مثلاً
📌 چند کاربرد مفید:
🔧 نکته: با تنظیم متغیر محیطی
برای جزئیات بیشتر:
مستندات رسمی Bash - بخش Builtins
امتحانش روی workflow روزمره خیلی حس سرعت و تمیزی بیشتری میدهد 🙂
🔖 #Linux #لینوکس #Linux #Bash #Shell #History #fc #CLI
👤 Developix
💎 Channel: @DevelopixLinux
fc در Bashگاهی یک دستور طولانی را اشتباه میزنی و فقط میخواهی همان را سریع اصلاح و دوباره اجرا کنی. بهجای پیمایش با کلید ↑ تا مرگ 😄، از builtin قوی Bash یعنی
fc استفاده کن.✨ ایده:
fc یک یا چند دستور آخر را در editor دلخواهت باز میکند، اصلاح میکنی و بعد خودش اجرا میکند.✅ مثال ساده:
echo "sume data" > file.txt
# اوه، تایپو! باید "some" باشد
fc
این دستور، آخرین کامند را در editor پیشفرض (مثلاً
vim یا nano) باز میکند، درست میکنی، ذخیره میکنی و بعد Bash نسخه اصلاحشده را اجرا میکند. 🚀📌 چند کاربرد مفید:
# ویرایش ۳ دستور آخر
fc -3
# فقط نمایش بدون اجرا (برای چک کردن)
fc -nl -3
🔧 نکته: با تنظیم متغیر محیطی
EDITOR میتوانی editor موردعلاقهات را انتخاب کنی:export EDITOR=nano
برای جزئیات بیشتر:
مستندات رسمی Bash - بخش Builtins
امتحانش روی workflow روزمره خیلی حس سرعت و تمیزی بیشتری میدهد 🙂
🔖 #Linux #لینوکس #Linux #Bash #Shell #History #fc #CLI
👤 Developix
💎 Channel: @DevelopixLinux
👍4
🎯 سریعترین راه پیدا کردن پوشههای سنگین با du + sort
وقتی دیسک نزدیک پر شدن است، گشتن دستی دنبال پوشههای چاق و چله واقعاً وقتگیر میشود. یک ترکیب سادهی
✅ این یک الگوی ساده و قابلحفظ است که روی اکثر توزیعها کار میکند:
🔍 توضیح کوتاه:
-
-
-
مثلاً برای بررسی
📌 نکات:
- روی مسیرهای سیستمی حساس بهتر است با
- اگر خروجی خیلی زیاد بود، میتوان فقط ۲۰ مورد آخر را دید:
👣 دفعه بعد که دیسک پر شد، قبل از panic همین الگو را اجرا کن و دقیقاً همان پوشهی مشکلساز را هدف بگیر.
📖 مرجع: man7.org/linux/man-pages/man1/du.1.html
🔖 #Linux #لینوکس #Linux #terminal #du #disk_usage #shell
👤 Developix
💎 Channel: @DevelopixLinux
وقتی دیسک نزدیک پر شدن است، گشتن دستی دنبال پوشههای چاق و چله واقعاً وقتگیر میشود. یک ترکیب سادهی
du و sort خیلی سریع نشان میدهد فضا دقیقاً کجا خورده شده است. 💽✅ این یک الگوی ساده و قابلحفظ است که روی اکثر توزیعها کار میکند:
du -h --max-depth=1 /path | sort -h
🔍 توضیح کوتاه:
-
du -h حجمها را human-readable مثل 10M، 2G نشان میدهد.-
--max-depth=1 فقط زیرپوشههای سطح اول را لیست میکند (خروجی شلوغ نمیشود).-
sort -h بر اساس حجم (با K/M/G) مرتب میکند.مثلاً برای بررسی
/home:du -h --max-depth=1 /home | sort -h
📌 نکات:
- روی مسیرهای سیستمی حساس بهتر است با
sudo اجرا شود تا همه چیز را ببیند.- اگر خروجی خیلی زیاد بود، میتوان فقط ۲۰ مورد آخر را دید:
du -h --max-depth=1 / | sort -h | tail -n 20
👣 دفعه بعد که دیسک پر شد، قبل از panic همین الگو را اجرا کن و دقیقاً همان پوشهی مشکلساز را هدف بگیر.
📖 مرجع: man7.org/linux/man-pages/man1/du.1.html
🔖 #Linux #لینوکس #Linux #terminal #du #disk_usage #shell
👤 Developix
💎 Channel: @DevelopixLinux
👍2👎1
خیلی وقتها یه سرویس روی سیستم بالا نمیاد یا کند میشه، و اولین جایی که باید سر بزنی لاگهاست. روی سیستمهای مدرن که از systemd استفاده میکنن، ابزار اصلی دیدن لاگها همون journalctl هست.
اینجا یه مرور سریع و کاربردی روی
منبع اصلی داک:
freedesktop.org/software/systemd/man/journalctl.html
🧩 ایده کلی
🔍 دیدن لاگ یک سرویس مشخص
فرض کن سرویس
سوییچ
📡 مانیتور لحظهای لاگ (مثل tail -f)
وقتی میخوای یه کانفیگ جدید رو تست کنی، این خیلی میچسبه:
⏱️ فیلتر زمانی لاگها
برای وقتی که میدونی مشکل از چه ساعتی شروع شده. مثلاً لاگهای امروز از ساعت 10 صبح:
یا مثلاً لاگهای ۲۴ ساعت اخیر کل سیستم:
⚙️ یک نمونه ورکفلو واقعی دیباگ
سناریو:
1️⃣ وضعیت سرویس:
2️⃣ دیدن لاگهای آخر برای خطا:
3️⃣ اگر Error مربوط به syntax بود، چک کانفیگ:
معمولاً ترکیب
🧹 مراقبت از حجم لاگها
روی بعضی سیستمها، journal میتونه فضا ببلعه اگر تنظیمش نکرده باشی. یه نگاه سریع به وضعیت:
و اگر لازم شد تمیزکاری کنترلشده:
این دستور لاگهای قدیمیتر از ۷ روز رو پاک میکنه. حتماً قبلش
🌱 اگر تا حالا بیشتر با
🔖 #Linux #لینوکس #Linux #GNU/Linux #systemd #journalctl #logging #bash #sysadmin
👤 Developix
💎 Channel: @DevelopixLinux
اینجا یه مرور سریع و کاربردی روی
journalctl داریم؛ هم برای دیباگ، هم برای مانیتور سبکوزن لاگها.منبع اصلی داک:
freedesktop.org/software/systemd/man/journalctl.html
🧩 ایده کلی
systemd-journald لاگهای کرنل، serviceها و حتی بعضی برنامهها رو جمع میکنه و journalctl راه خواندن و فیلتر کردن این لاگهاست. مزیتش اینه که همهچی یهجا جمعه و میتونی بر اساس unit، زمان، سطح لاگ و ... فیلتر بزنی.🔍 دیدن لاگ یک سرویس مشخص
فرض کن سرویس
nginx.service قاطی کرده. بهجای گشتن تو چند تا فایل لاگ، مستقیم این رو بزن:sudo journalctl -u nginx.service -e
سوییچ
-u یعنی فیلتر روی همون systemd unit و -e میبردت آخر لاگ، شبیه tail.📡 مانیتور لحظهای لاگ (مثل tail -f)
وقتی میخوای یه کانفیگ جدید رو تست کنی، این خیلی میچسبه:
sudo journalctl -u nginx.service -f
-f یعنی هر چیزی جدیدی که لاگ شد رو زنده نشون بده. عالی برای وقتی که nginx -t میزنی یا داری reload میکنی.⏱️ فیلتر زمانی لاگها
برای وقتی که میدونی مشکل از چه ساعتی شروع شده. مثلاً لاگهای امروز از ساعت 10 صبح:
sudo journalctl -u nginx.service --since "today 10:00"
یا مثلاً لاگهای ۲۴ ساعت اخیر کل سیستم:
sudo journalctl --since "-24 hours"
⚙️ یک نمونه ورکفلو واقعی دیباگ
سناریو:
nginx بعد از تغییر کانفیگ بالا نمیاد.1️⃣ وضعیت سرویس:
systemctl status nginx.service
2️⃣ دیدن لاگهای آخر برای خطا:
sudo journalctl -u nginx.service -e -n 50
-n 50 فقط ۵۰ خط آخر رو میاره که هم سریعتره هم خواناتر.3️⃣ اگر Error مربوط به syntax بود، چک کانفیگ:
sudo nginx -t
معمولاً ترکیب
systemctl status + journalctl همون چیزیه که واقعاً تو کار روزمره استفاده میشه.🧹 مراقبت از حجم لاگها
روی بعضی سیستمها، journal میتونه فضا ببلعه اگر تنظیمش نکرده باشی. یه نگاه سریع به وضعیت:
sudo journalctl --disk-usage
و اگر لازم شد تمیزکاری کنترلشده:
sudo journalctl --vacuum-time=7d
این دستور لاگهای قدیمیتر از ۷ روز رو پاک میکنه. حتماً قبلش
--disk-usage رو ببین.🌱 اگر تا حالا بیشتر با
/var/log سر و کار داشتی، یه کم با journalctl بازی کن؛ چند تا سرویس روی سیستم خودت رو باهاش دیباگ کن. بعد از یکیدو بار استفاده، عملاً میشه ابزار روزمرهات برای فهمیدن "دقیقاً چی شد که خراب شد؟" 😉🔖 #Linux #لینوکس #Linux #GNU/Linux #systemd #journalctl #logging #bash #sysadmin
👤 Developix
💎 Channel: @DevelopixLinux
❤3👍3
اسکریپتنویسی Bash یکی از مفیدترین مهارتها برای هر کاربر گنو/لینوکس است. با چند خط کد میشود کارهایی مثل بکاپ، تمیز کردن لاگها، یا همگامسازی پوشهها را کاملاً خودکار کرد. این پست یک مثال واقعی و قابلاستفاده از یک اسکریپت بکاپ خانگی میدهد که میشود روی هر distro اجراش کرد. 🙂
ایده ساده است: چند پوشه مهم (مثلاً ~/Documents و ~/Projects) را با `tar` فشرده کنیم، اسم فایل را بر اساس تاریخ بگذاریم، و در یک مسیر امن ذخیره کنیم. بعداً میتوان این اسکریپت را در `cron` یا `systemd timer` گذاشت تا خودکار اجرا شود.
این مثال با الهام از مستندات رسمی Bash و man pageهای `tar(1)` و `date(1)` نوشته شده (روی هر سیستم میشود با `man tar` و `help test` جزئیات بیشتر را دید).
✨ اسکریپت نمونه:
چند نکته مهم از دل این اسکریپت:
• `set -euo pipefail` کمک میکند اسکریپت در صورت خطا فوراً متوقف شود و از باگهای عجیب جلوگیری میکند.
• از آرایه Bash برای لیست پوشهها استفاده شده؛ اضافه کردن مسیر جدید فقط با ویرایش `SOURCE_DIRS` انجام میشود.
• با `--exclude` جلوی بکاپ شدن چیزهای بیمصرف (مثل ~/.cache) گرفته میشود؛ این کار فضا و زمان را بهطرز محسوسی کم میکند.
برای استفاده عملی، فایل را مثلاً با نام `backup-home.sh` در `~/bin` ذخیره و executable کنید:
بعد میشود با اضافه کردن یک entry ساده در `crontab`، این بکاپ را مثلاً هر شب اجرا کرد (`crontab -e` را ببینید، طبق مستندات `man 5 crontab`).
این اسکریپت پایه خوبی است برای ساختن یک سیستم بکاپ جدیتر: میشود log اضافه کرد، روی remote server با `ssh` کپی کرد، یا rotation برای پاک کردن بکاپهای خیلی قدیمی گذاشت.
یک بار روی یک پوشه کوچک تست، بعد کمکم روی دادههای مهم پیادهسازی شود و نسخههای مختلف امتحان شود. اگر بهدردتان خورد، اسکریپت خودتان را با بقیه لینوکسیها به اشتراک بگذارید. 🚀
🔖 #Linux #لینوکس #Linux #Bash #Shell #Backup #GNU/Linux #tar #cron
👤 Developix
💎 Channel: @DevelopixLinux
ایده ساده است: چند پوشه مهم (مثلاً ~/Documents و ~/Projects) را با `tar` فشرده کنیم، اسم فایل را بر اساس تاریخ بگذاریم، و در یک مسیر امن ذخیره کنیم. بعداً میتوان این اسکریپت را در `cron` یا `systemd timer` گذاشت تا خودکار اجرا شود.
این مثال با الهام از مستندات رسمی Bash و man pageهای `tar(1)` و `date(1)` نوشته شده (روی هر سیستم میشود با `man tar` و `help test` جزئیات بیشتر را دید).
✨ اسکریپت نمونه:
#!/usr/bin/env bash
set -euo pipefail
SOURCE_DIRS=("$HOME/Documents" "$HOME/Projects")
BACKUP_DIR="$HOME/backups"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
BACKUP_FILE="$BACKUP_DIR/home-backup-$DATE.tar.gz"
mkdir -p "$BACKUP_DIR"
for dir in "${SOURCE_DIRS[@]}"; do
if [[ ! -d "$dir" ]]; then
echo "هشدار: پوشه $dir پیدا نشد، رد میشود." >&2
fi
done
# ایجاد آرشیو فشرده
tar -czpf "$BACKUP_FILE" \
--exclude="$HOME/.cache" \
"${SOURCE_DIRS[@]}"
echo "بکاپ ساخته شد: $BACKUP_FILE"
چند نکته مهم از دل این اسکریپت:
• `set -euo pipefail` کمک میکند اسکریپت در صورت خطا فوراً متوقف شود و از باگهای عجیب جلوگیری میکند.
• از آرایه Bash برای لیست پوشهها استفاده شده؛ اضافه کردن مسیر جدید فقط با ویرایش `SOURCE_DIRS` انجام میشود.
• با `--exclude` جلوی بکاپ شدن چیزهای بیمصرف (مثل ~/.cache) گرفته میشود؛ این کار فضا و زمان را بهطرز محسوسی کم میکند.
برای استفاده عملی، فایل را مثلاً با نام `backup-home.sh` در `~/bin` ذخیره و executable کنید:
chmod +x ~/bin/backup-home.sh
بعد میشود با اضافه کردن یک entry ساده در `crontab`، این بکاپ را مثلاً هر شب اجرا کرد (`crontab -e` را ببینید، طبق مستندات `man 5 crontab`).
این اسکریپت پایه خوبی است برای ساختن یک سیستم بکاپ جدیتر: میشود log اضافه کرد، روی remote server با `ssh` کپی کرد، یا rotation برای پاک کردن بکاپهای خیلی قدیمی گذاشت.
یک بار روی یک پوشه کوچک تست، بعد کمکم روی دادههای مهم پیادهسازی شود و نسخههای مختلف امتحان شود. اگر بهدردتان خورد، اسکریپت خودتان را با بقیه لینوکسیها به اشتراک بگذارید. 🚀
🔖 #Linux #لینوکس #Linux #Bash #Shell #Backup #GNU/Linux #tar #cron
👤 Developix
💎 Channel: @DevelopixLinux
👍5
اگه همیشه چند تا ترمینال باز داری، بین ssh سرورها جابهجا میشی و هی پنجرهها گم میشن، tmux دقیقا همون چیزیه که زندگیت رو روی ترمینال راحتتر میکنه 😄
اینجا یه معرفی عملی و سریع از tmux بر اساس راهنمای رسمی:
https://github.com/tmux/tmux/wiki
🧱 tmux دقیقا چیه؟
tmux یه terminal multiplexerـه؛ یعنی توی یه ترمینال میتونی چند تا "پنجره" و "پن" (split) داشته باشی، سشنهات رو نگه داری، از ssh قطع بشی ولی پروسههات زنده بمونن.
مثلا یه سشن برای لاگها، یکی برای ویرایش config و یکی برای اجرای scriptها؛ همه زیر یه اتصال ssh که اگه قطع هم بشه، چیزی نمیپره 👌
🛠 نصب سریع روی توزیعهای مختلف
روی Debian/Ubuntu:
روی Fedora:
روی Arch:
بعد از نصب، فقط بزن:
و وارد اولین سشن خودت میشی.
📌 شروع کار: پنجره و پن (split)
کلید اصلی tmux اینه:
یعنی هر کاری میخوای بکنی، اول
چندتا چیز کاربردی روزمره:
• ساخت پن جدید افقی:
• ساخت پن عمودی:
• جابهجایی بین پنها با جهتها:
• ساخت پنجره (window) جدید:
• جابهجایی بین پنجرهها:
✨ یه مثال واقعی: مانیتور لاگ + ویرایش کانفیگ
سناریو کلاسیک sysadmin:
۱) با ssh وصل شو به سرور.
۲) tmux رو اجرا کن:
۳) پن رو عمودی split کن (بالا لاگ، پایین ویرایش):
بالا:
پایین: فایل کانفیگ nginx رو ویرایش کن:
همزمان لاگها رو live میبینی و config رو تغییر میدی، بدون نیاز به چند تا ترمینال جدا.
🔁 جدا شدن و دوباره وصل شدن به سشن
قلب ماجرا اینجاست. وسط کار اگه نت قطع بشه یا ssh ببنده، tmux سشنت زنده میمونه.
• جدا شدن (detach):
حالا میتونی ssh رو ببندی، بعدا که برگشتی:
همون جایی میای که کار رو رها کرده بودی، لاگ، vim، هرچی.
🧩 یه config ساده و مفید
اگه دوست داری کلید prefix رو مثل screen یا راحتتر کنی، مثلا
بعد tmux رو از داخلش با این دستور reload کن:
از اینجا به بعد، prefix میشه
⚠ چند نکته ریز ولی مهم
• اگه چند تا سشن داری، لیستشون:
• attach به یه سشن مشخص:
• ساخت سشن با اسم مشخص، مخصوصا برای هر پروژه:
🌱 جمعبندی
اگه زیاد با ssh، لاگها، build طولانی یا کارهای شبانهروزی روی سرور سروکله میزنی، tmux یکی از اون ابزارهاییه که بعد از یه مدت بدونش واقعا سخته کار کردن.
یه سشن ساده بساز، دو سه تا split试 کن و کمکم بذار عضوی از workflow روزمرهات بشه. بعدا هر ترفند جدیدی یاد گرفتی، به بقیه هم منتقل کن 🙌
🔖 #Linux #لینوکس #Linux #tmux #Terminal #Shell #Sysadmin #GNU/Linux
👤 Developix
💎 Channel: @DevelopixLinux
اینجا یه معرفی عملی و سریع از tmux بر اساس راهنمای رسمی:
https://github.com/tmux/tmux/wiki
🧱 tmux دقیقا چیه؟
tmux یه terminal multiplexerـه؛ یعنی توی یه ترمینال میتونی چند تا "پنجره" و "پن" (split) داشته باشی، سشنهات رو نگه داری، از ssh قطع بشی ولی پروسههات زنده بمونن.
مثلا یه سشن برای لاگها، یکی برای ویرایش config و یکی برای اجرای scriptها؛ همه زیر یه اتصال ssh که اگه قطع هم بشه، چیزی نمیپره 👌
🛠 نصب سریع روی توزیعهای مختلف
روی Debian/Ubuntu:
sudo apt update && sudo apt install tmux
روی Fedora:
sudo dnf install tmux
روی Arch:
sudo pacman -S tmux
بعد از نصب، فقط بزن:
tmux
و وارد اولین سشن خودت میشی.
📌 شروع کار: پنجره و پن (split)
کلید اصلی tmux اینه:
Ctrl+b = prefixیعنی هر کاری میخوای بکنی، اول
Ctrl+b، بعد دکمهی مورد نظر.چندتا چیز کاربردی روزمره:
• ساخت پن جدید افقی:
Ctrl+b بعد "• ساخت پن عمودی:
Ctrl+b بعد %• جابهجایی بین پنها با جهتها:
Ctrl+b + کلیدهای جهت (← ↑ → ↓)• ساخت پنجره (window) جدید:
Ctrl+b بعد c• جابهجایی بین پنجرهها:
Ctrl+b بعد n (بعدی) یا p (قبلی)✨ یه مثال واقعی: مانیتور لاگ + ویرایش کانفیگ
سناریو کلاسیک sysadmin:
۱) با ssh وصل شو به سرور.
۲) tmux رو اجرا کن:
tmux
۳) پن رو عمودی split کن (بالا لاگ، پایین ویرایش):
بالا:
journalctl -u nginx -f
پایین: فایل کانفیگ nginx رو ویرایش کن:
sudo vim /etc/nginx/nginx.conf
همزمان لاگها رو live میبینی و config رو تغییر میدی، بدون نیاز به چند تا ترمینال جدا.
🔁 جدا شدن و دوباره وصل شدن به سشن
قلب ماجرا اینجاست. وسط کار اگه نت قطع بشه یا ssh ببنده، tmux سشنت زنده میمونه.
• جدا شدن (detach):
Ctrl+b بعد dحالا میتونی ssh رو ببندی، بعدا که برگشتی:
tmux attach
همون جایی میای که کار رو رها کرده بودی، لاگ، vim، هرچی.
🧩 یه config ساده و مفید
اگه دوست داری کلید prefix رو مثل screen یا راحتتر کنی، مثلا
Ctrl+a، یه فایل ~/.tmux.conf بساز:set -g prefix C-a
unbind C-b
bind C-a send-prefix
بعد tmux رو از داخلش با این دستور reload کن:
tmux source-file ~/.tmux.conf
از اینجا به بعد، prefix میشه
Ctrl+a.⚠ چند نکته ریز ولی مهم
• اگه چند تا سشن داری، لیستشون:
tmux ls
• attach به یه سشن مشخص:
tmux attach -t mysession
• ساخت سشن با اسم مشخص، مخصوصا برای هر پروژه:
tmux new -s myproject
🌱 جمعبندی
اگه زیاد با ssh، لاگها، build طولانی یا کارهای شبانهروزی روی سرور سروکله میزنی، tmux یکی از اون ابزارهاییه که بعد از یه مدت بدونش واقعا سخته کار کردن.
یه سشن ساده بساز، دو سه تا split试 کن و کمکم بذار عضوی از workflow روزمرهات بشه. بعدا هر ترفند جدیدی یاد گرفتی، به بقیه هم منتقل کن 🙌
🔖 #Linux #لینوکس #Linux #tmux #Terminal #Shell #Sysadmin #GNU/Linux
👤 Developix
💎 Channel: @DevelopixLinux
🔥5
💠 نسخه جدید کرنل لینوکس (Linux) منتشر شده است
🔸 ارتقا از نسخه 7.0.12 به 7.1.0
🔹 لیست تغییرات این نسخه:
- اصلاح باگهای مهم KVM روی معماری arm64
- بهبود سازگاری و انطباق کنترلرهای USB SuperSpeed
- رفع مشکل دستگاههای شبح USB روی پورتهای دوحالته Tegra
- پایداری بهتر لینک QSGMII در PHYهای LAN8814
- افزایش ایمنی دسترسیهای PMBus/GPIO در درایور ADM1266
- بهبودهای ریز متعدد درایورها و زیرسیستمها و غیره
🔖 #linux, #linux, #release
💎 @DevelopixLinux
🔸 ارتقا از نسخه 7.0.12 به 7.1.0
🔹 لیست تغییرات این نسخه:
- اصلاح باگهای مهم KVM روی معماری arm64
- بهبود سازگاری و انطباق کنترلرهای USB SuperSpeed
- رفع مشکل دستگاههای شبح USB روی پورتهای دوحالته Tegra
- پایداری بهتر لینک QSGMII در PHYهای LAN8814
- افزایش ایمنی دسترسیهای PMBus/GPIO در درایور ADM1266
- بهبودهای ریز متعدد درایورها و زیرسیستمها و غیره
🔖 #linux, #linux, #release
💎 @DevelopixLinux
❤6🔥2👍1