💎 Channel: @DevelopixLinux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥5👎4❤2
Forwarded from Developix Support
استخدام NOC Cloud Engineer از مسیر آموزش
در بوتکمپ تخصصی Network Operations Center-Tier 1
۸۰ ساعت | آنلاین
🔸آموزش در این بوتکمپ زیر نظر متخصصان با سابقه حوزه شبکه و دیتاسنتر انجام میشود و هدف آن استخدام در موقعیت شغلی کارشناس مرکز عملیات شبکه از میان نفرات برتر بوتکمپ است.
📌برخی از سرفصلهای دوره:
- نصب و مدیریت لینوکس (بر اساس LPIC1 سفارشی)
- اصول شبکه (+Network / CCNA)
- امنیت پایه (+Security)
- مانیتورینگ سرویسها و کار با ابزارهای حرفهای
- مدیریت Incident و تیکتینگ
این دوره مناسب چی کسانی است⁉️
-علاقهمندان به شبکه، IT و امنیت؛
-فارغالتحصیلان یا دانشجویان رشتههای کامپیوتر و برق؛
-کسانی که میخواهند خیلی سریع وارد بازار کار فناوری اطلاعات شوند؛
-افرادی که به دنبال اولین تجربه شغلی در حوزه NOC و شبکه هستند.
📆 تاریخ شروع بوتکمپ: ۳ آبان۱۴۰۴
🔰 بدون پیشنیاز؛ همراه با پروژه عملی و کوئیز
🧾مدرک پایان دوره
🔗 اطلاعات بیشتر و پیشثبتنام👇
https://B2n.ir/mq4649
___
فناپکمپس؛ رشد در بازار کار دیجیتال
@Fanapcampus
در بوتکمپ تخصصی Network Operations Center-Tier 1
۸۰ ساعت | آنلاین
🔸آموزش در این بوتکمپ زیر نظر متخصصان با سابقه حوزه شبکه و دیتاسنتر انجام میشود و هدف آن استخدام در موقعیت شغلی کارشناس مرکز عملیات شبکه از میان نفرات برتر بوتکمپ است.
📌برخی از سرفصلهای دوره:
- نصب و مدیریت لینوکس (بر اساس LPIC1 سفارشی)
- اصول شبکه (+Network / CCNA)
- امنیت پایه (+Security)
- مانیتورینگ سرویسها و کار با ابزارهای حرفهای
- مدیریت Incident و تیکتینگ
این دوره مناسب چی کسانی است⁉️
-علاقهمندان به شبکه، IT و امنیت؛
-فارغالتحصیلان یا دانشجویان رشتههای کامپیوتر و برق؛
-کسانی که میخواهند خیلی سریع وارد بازار کار فناوری اطلاعات شوند؛
-افرادی که به دنبال اولین تجربه شغلی در حوزه NOC و شبکه هستند.
📆 تاریخ شروع بوتکمپ: ۳ آبان۱۴۰۴
🔰 بدون پیشنیاز؛ همراه با پروژه عملی و کوئیز
🧾مدرک پایان دوره
🔗 اطلاعات بیشتر و پیشثبتنام👇
https://B2n.ir/mq4649
___
فناپکمپس؛ رشد در بازار کار دیجیتال
@Fanapcampus
❤3
پشتیبانگیری خودکار با rsync + systemd ⏱️💾
یک مشکل واقعی: سایت یا سرور کمبود فضا نداره، ولی همیشه لازمه یک بکاپ سالم و قابل بازیابی داشته باشیم. این آموزش کوتاه نشون میده چطور با rsync و یک systemd timer بکاپهای افزایشی و قابل اتکا بسازیم—بدون cron پیچیده.
ایدههای کلیدی:
- rsync برای کپی افزایشی و حفظ مجوزها و لینکها عالیه (man: rsync) ✅
- systemd.timer جایگزین مدرن و قابل اطمینان برای زمانبندی است (مستندات: systemd.timer) ⏱️
- استفاده از --link-dest برای بکاپهای فضایدوست و قابل بازگشت.
نمونه عملی: اسکریپت بکاپ و واحد systemd. این مثال از /var/www به /backup بکاپ میگیرد و آخرین نسخه را با لینک حفظ میکند.
و فایلهای systemd:
نکات عملی:
- قبل از فعالسازی با rsync --dry-run تست کنید.
- مطمئن شید مجوزها و مالک فایلها در مقصد درست هستند (خصوصاً SELinux یا ACL).
- برای جزئیات بیشتر به مستندات Bash و systemd مراجعه کنید: Bash و Debian Timers guide.
- اشتباه رایج: استفاده از --delete بدون بررسی قبلی میتونه داده حذفشده را از بین ببره — همیشه تست کنید.
این روش ساده، قابل اتکا و قابل تنظیم برای سرورها و VPSهاست. امتحانش کن و اگه مفید بود، به بقیه هم معرفی کن 😉
🔖 #Linux #لینوکس #rsync #systemd #backup #linux #bash
👤 Developix
💎 Channel: @DevelopixLinux
یک مشکل واقعی: سایت یا سرور کمبود فضا نداره، ولی همیشه لازمه یک بکاپ سالم و قابل بازیابی داشته باشیم. این آموزش کوتاه نشون میده چطور با 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: @DevelopixLinux
👍7❤2
📦 پیشرفت کلی کپی با rsync و کاهش اولویت با nice
یک مشکل رایج: هنگام همگامسازی یا بکاپگیری از فایلهای بزرگ، نمایش پیشرفت کلی نداریم و فرآیند روی سیستم تولید بار میکند. این ترفند ساده هم پیشرفت کلی را نشان میدهد و هم با کاهش اولویت CPU بار را کمتر میکند. ⚙️
ایده: از rsync با گزینه --info=progress2 برای نمایش درصد کل عملیات استفاده کنید و با nice اولویت پردازشی را بالا ببرید تا سیستم تعاملیتان کند نشود. 🛠️
نمونهٔ عملی (ایمن و قابل استفاده روی اکثر توزیعها):
نکات کوتاه اما کلیدی:
- /source/ با اسلش انتهایی پوشهٔ محتوا را همگامسازی میکند؛ بدون اسلش، پوشه بهعنوان زیرپوشه منتقل میشود. ↪️
-
-
مواردی که باید مراقب باشید:
- اگر دستگاه ذخیرهسازی خارجی یا شبکهای دارید، سرعت به رابط و بار شبکه بستگی دارد؛ rsync فقط انتقال را مدیریت میکند. 🌐
- برای عملیات خیلی حساس به I/O میتوان از ionice هم استفاده کرد، اما بسته به کرنل و برنامهریز دیسک، تاثیر متفاوت خواهد بود.
در پایان: این ترکیب ساده سریعترین راه برای داشتن پیشرفت قابلفهم و کاهش تأثیر روی سیستم در حین بکاپگیری یا همگامسازی است. امتحانش کنید و بازخورد بگذارید — کاربردش در کارهای روزمره بسیار مفید است. ✅
منبع رسمی: rsync — official documentation
🔖 #Linux #لینوکس #rsync #backup #linux #terminal
👤 Developix
💎 Channel: @DevelopixLinux
یک مشکل رایج: هنگام همگامسازی یا بکاپگیری از فایلهای بزرگ، نمایش پیشرفت کلی نداریم و فرآیند روی سیستم تولید بار میکند. این ترفند ساده هم پیشرفت کلی را نشان میدهد و هم با کاهش اولویت 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: @DevelopixLinux
🔥2👎1
روی اکثر توزیعهای مدرن مثل Debian, Ubuntu, Fedora و Arch الان systemd مدیر سرویس (init system) اصلیه. اگر باهاش راحت نباشیم، دیباگ کردن سرویسها و اسکریپتهامون خیلی عذابآوره.
تو این پست یه سناریوی واقعی رو میگیریم: اجرای یه اسکریپت ساده بهعنوان سرویس، طوری که:
• بعد از هر بوت خودش اجرا بشه 🔁
• اگر کرش کرد خودکار دوباره بالا بیاد 💥➡️🚀
• لاگهاش تو
سناریو:
فرض کن یه اسکریپت Python داری که هر ۱۰ ثانیه وضعیت دیسک رو لاگ میگیره یا مثلا یه worker ساده برای کارهای background. نمیخوای هر دفعه خودت اجراش کنی؛ میخوای مثل بقیه سرویسها با
قدم ۱: ساخت اسکریپت
مثال ساده؛ یه اسکریپت که هر ۱۰ ثانیه زمان سیستم رو لاگ مینویسه:
محتوای فایل:
بعد:
قدم ۲: ساخت Unit برای systemd
حالا یه سرویس systemd تعریف میکنیم:
محتوا:
برای سادهتر شدن میتونی
قدم ۳: Reload و فعالسازی سرویس
اگر
یا مستقیماً فایل:
نکات کاربردی
• تو داکیومنت رسمی systemd میتونی تمام گزینهها رو ببینی:
systemd.service man page
• برای هر تغییری در فایل
• اگر سرویس کرش میکنه،
این الگو همون چیزیه که برای اجرای bot ها، worker ها، اسکریپتهای backup و کلی کار دیگه روی سرورهای واقعی استفاده میشه. یه بار خوب یاد گرفته بشه، نصف دردسرهای «سرویسم خودبهخود میخوابه» حل میشه 🙂
امتحانش کن روی یه ماشین تست یا VM و هر جا مفید بود، توی سرورهات استفاده کن.
🔖 #Linux #لینوکس #Linux #systemd #Bash #Shell #Sysadmin #Service #GNU/Linux
👤 Developix
💎 Channel: @DevelopixLinux
تو این پست یه سناریوی واقعی رو میگیریم: اجرای یه اسکریپت ساده بهعنوان سرویس، طوری که:
• بعد از هر بوت خودش اجرا بشه 🔁
• اگر کرش کرد خودکار دوباره بالا بیاد 💥➡️🚀
• لاگهاش تو
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: @DevelopixLinux
❤7👍3🔥2
گاهی وسط کار یادت میافته که از پوشهی پروژههات 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