📁 Where Are systemd Service Files Stored?
If you're working with Linux, you've probably used
But where are the actual service files stored? 🤔
The main locations are:
🔹 Custom services and local configurations
🔹 Service files installed by packages
🔹 System service files on some Linux distributions
🔹 Runtime and temporary unit files
💡 Want to find the exact location of a service?
Instead of searching manually, simply run:
You can also inspect the service configuration with:
And if you want to customize an existing service, it's better to use:
This creates an override without directly modifying the original service file.
Understanding these paths makes managing and troubleshooting
#Linux #systemd #SysAdmin #DevOps
@JustMyLogss
If you're working with Linux, you've probably used
systemd to manage services like Nginx, Apache, Docker, or custom applications.But where are the actual service files stored? 🤔
The main locations are:
/etc/systemd/system/
🔹 Custom services and local configurations
/usr/lib/systemd/system/
🔹 Service files installed by packages
/lib/systemd/system/
🔹 System service files on some Linux distributions
/run/systemd/system/
🔹 Runtime and temporary unit files
💡 Want to find the exact location of a service?
Instead of searching manually, simply run:
systemctl show -p FragmentPath nginx.service
You can also inspect the service configuration with:
systemctl cat nginx.service
And if you want to customize an existing service, it's better to use:
sudo systemctl edit nginx
This creates an override without directly modifying the original service file.
Understanding these paths makes managing and troubleshooting
systemd services much easier. 🐧⚙️#Linux #systemd #SysAdmin #DevOps
@JustMyLogss
Emulates 60+ AWS services locally on a single port with real database containers.
https://github.com/ministackorg/ministack
https://github.com/ministackorg/ministack
GitHub
GitHub - ministackorg/ministack: Ministack: Free, open-source local AWS emulator - 60+ services, Terraform compatible, real databases.…
Ministack: Free, open-source local AWS emulator - 60+ services, Terraform compatible, real databases. Free forever. MIT licensed. - ministackorg/ministack
Converts Word, PowerPoint, Excel, and PDF documents into clean Markdown.
https://github.com/firecrawl/anydoc
https://github.com/firecrawl/anydoc
GitHub
GitHub - firecrawl/anydoc: Convert Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF to clean Markdown. Built in Rust…
Convert Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF to clean Markdown. Built in Rust, with Node.js and Python bindings. - firecrawl/anydoc
Stream Spotify, YouTube Music, and local files all in one native app
https://github.com/nolight132/sonora
https://github.com/nolight132/sonora
GitHub
GitHub - sonorahq/sonora: A native music streaming client, built with Rust and GPUI
A native music streaming client, built with Rust and GPUI - sonorahq/sonora
Carries TCP traffic through DNS queries with adaptive routing and real multipath support to maximize stability and performance in challenging network conditions.
https://github.com/masterking32/MasterDnsVPN
https://github.com/masterking32/MasterDnsVPN
GitHub
GitHub - masterking32/MasterDnsVPN: Advanced DNS tunneling VPN for censorship bypass, optimized beyond DNSTT and SlipStream with…
Advanced DNS tunneling VPN for censorship bypass, optimized beyond DNSTT and SlipStream with low-overhead ARQ, resolver load balancing, high packet-loss stability and speed. - masterking32/MasterDn...
Discover top root apps, Magisk modules, and step-by-step rooting guides.
https://github.com/awesome-android-root/awesome-android-root
https://github.com/awesome-android-root/awesome-android-root
GitHub
GitHub - awesome-android-root/awesome-android-root: Discover best root apps, Magisk, KernelSu & LSPosed(xposed) modules & rooting…
Discover best root apps, Magisk, KernelSu & LSPosed(xposed) modules & rooting guides - awesome-android-root/awesome-android-root
Open Source Everything!
Curated list with 400+ entries of the best open-source software, hardware, and standards:
https://github.com/An-anonymous-coder/Open-Source-Everything
Curated list with 400+ entries of the best open-source software, hardware, and standards:
https://github.com/An-anonymous-coder/Open-Source-Everything
GitHub
GitHub - An-anonymous-coder/Open-Source-Everything: Open Source Everything: A curated list of the best open source software
Open Source Everything: A curated list of the best open source software - An-anonymous-coder/Open-Source-Everything
Did you know that if you have Persian projects and need a solar calendar, you can use Doran?
react, vue, angular, svelte
There is support for them right now.
github.com/amiralibg/Doran
amiralibg.github.io/Doran
react, vue, angular, svelte
There is support for them right now.
github.com/amiralibg/Doran
amiralibg.github.io/Doran
GitHub
GitHub - amiralibg/Doran: The Open Source Persian Calendar Ecosystem
The Open Source Persian Calendar Ecosystem. Contribute to amiralibg/Doran development by creating an account on GitHub.
instagram-private-graph: Analyze the followers and following accounts that a private (hidden) Instagram account interacts with. · GitHub
https://github.com/0x6rss/instagram-private-graph
https://github.com/0x6rss/instagram-private-graph
GitHub
GitHub - 0x6rss/instagram-private-graph: Analyze the followers and following accounts that a private (hidden) Instagram account…
Analyze the followers and following accounts that a private (hidden) Instagram account interacts with. - 0x6rss/instagram-private-graph
Open Code Review is an AI-powered code review CLI tool. It originated as Alibaba Group's internal official AI code review assistant — over the past two years, it has served tens of thousands of developers and identified millions of code defects. After thorough validation at massive scale, we incubated it into an open source project for the community
https://github.com/alibaba/open-code-review
https://github.com/alibaba/open-code-review
GitHub
GitHub - alibaba/open-code-review: Secure, fast, efficient, battle-tested at Alibaba's scale. Hybrid architecture code review tool:…
Secure, fast, efficient, battle-tested at Alibaba's scale. Hybrid architecture code review tool: deterministic pipelines + LLM Agent, precise line-level comments, built-in multi-language ru...
توی این پست میخوایم با یکی از مفاهیم قدیمی ولی مهم در لینوکس آشنا بشیم:
Chroot Jail
کلمهی chroot مخفف عبارت زیر است:
در لینوکس، هر پردازش یک مسیر ریشه (Root Directory) دارد که معمولاً با
این مسیر تعیین میکند یک برنامه از کجا شروع به دیدن فایلها و دایرکتوریهای سیستم کند.
در حالت عادی، یک پردازش میتواند ساختار اصلی سیستم را ببیند:
اما با استفاده از Chroot میتوان Root یک پردازش را تغییر داد.
مثلاً:
بعد از اجرای برنامه داخل این محیط، مسیر
یعنی برنامه فکر میکند در یک سیستم جدا اجرا میشود، در حالی که همچنان روی همان سیستم اصلی قرار دارد.
چرا به آن Jail میگویند؟
Jail یعنی «زندان».
چون یک کاربر یا سرویس داخل یک محدوده مشخص قرار میگیرد و فقط همان محیط را مشاهده میکند.
مثلاً یک کاربر FTP:
بدون Chroot:
با Chroot:
در این حالت کاربر دیگر به مسیرهایی مثل:
سیستم اصلی دسترسی ندارد.
اجرای Chroot
ساختار کلی دستور:
مثلاً:
با این دستور، محیط Bash داخل Jail اجرا میشود و فقط فایلهای موجود در همان محیط را مشاهده میکند.
کاربردهای Chroot Jail
1) محدود کردن سرویسها
یکی از رایجترین استفادههای Chroot، محدود کردن سرویسهایی مثل FTP است تا در صورت وجود مشکل، دسترسی آنها به کل سیستم محدود شود.
2) تعمیر سیستم لینوکس
یکی از کاربردهای حرفهای Chroot، تعمیر سیستمهایی است که دیگر بوت نمیشوند.
با استفاده از Live Linux:
بعد میتوان کارهایی مثل:
را انجام داد.
3) ساخت محیط تست
با Chroot میتوان یک محیط لینوکسی آزمایشی ساخت، بدون اینکه سیستم اصلی تغییر کند.
مثلاً:
نکته امنیتی مهم
Chroot یک Sandbox کامل نیست.
Chroot فقط دید پردازش نسبت به فایلسیستم را تغییر میدهد.
اما:
❌ Kernel جدا ایجاد نمیکند
❌ Processها را کاملاً جدا نمیکند
❌ منابع سیستم را محدود نمیکند
به همین دلیل نباید آن را با Container یا Virtual Machine اشتباه گرفت.
Escape از Chroot
یکی از موضوعات مهم امنیتی، بررسی امکان خروج از محیط Chroot است.
دلیل اصلی این است که Chroot همچنان از همان Kernel سیستم اصلی استفاده میکند:
همچنین مدیریت Deviceها در مسیر:
بسیار مهم است.
چون قرار دادن Deviceهای حساس مثل:
میتواند امنیت محیط را کاهش دهد.
@JustMyLogss
Chroot Jail
کلمهی chroot مخفف عبارت زیر است:
Change Root
در لینوکس، هر پردازش یک مسیر ریشه (Root Directory) دارد که معمولاً با
/ مشخص میشود.این مسیر تعیین میکند یک برنامه از کجا شروع به دیدن فایلها و دایرکتوریهای سیستم کند.
در حالت عادی، یک پردازش میتواند ساختار اصلی سیستم را ببیند:
/
├── bin
├── etc
├── home
├── usr
├── var
└── root
اما با استفاده از Chroot میتوان Root یک پردازش را تغییر داد.
مثلاً:
/var/jail
├── bin
├── etc
├── lib
└── home
بعد از اجرای برنامه داخل این محیط، مسیر
/var/jail برای آن برنامه تبدیل به / میشود.یعنی برنامه فکر میکند در یک سیستم جدا اجرا میشود، در حالی که همچنان روی همان سیستم اصلی قرار دارد.
چرا به آن Jail میگویند؟
Jail یعنی «زندان».
چون یک کاربر یا سرویس داخل یک محدوده مشخص قرار میگیرد و فقط همان محیط را مشاهده میکند.
مثلاً یک کاربر FTP:
بدون Chroot:
FTP User
|
+-- کل فایل سیستم
با Chroot:
FTP User
|
+-- /home/user
|
+-- فایلهای خودش
در این حالت کاربر دیگر به مسیرهایی مثل:
/etc
/usr
/root
سیستم اصلی دسترسی ندارد.
اجرای Chroot
ساختار کلی دستور:
chroot /path/to/new/root command
مثلاً:
sudo chroot /var/jail /bin/bash
با این دستور، محیط Bash داخل Jail اجرا میشود و فقط فایلهای موجود در همان محیط را مشاهده میکند.
کاربردهای Chroot Jail
1) محدود کردن سرویسها
یکی از رایجترین استفادههای Chroot، محدود کردن سرویسهایی مثل FTP است تا در صورت وجود مشکل، دسترسی آنها به کل سیستم محدود شود.
2) تعمیر سیستم لینوکس
یکی از کاربردهای حرفهای Chroot، تعمیر سیستمهایی است که دیگر بوت نمیشوند.
با استفاده از Live Linux:
mount /dev/sda2 /mnt
chroot /mnt
بعد میتوان کارهایی مثل:
update-grub
passwd
apt update
را انجام داد.
3) ساخت محیط تست
با Chroot میتوان یک محیط لینوکسی آزمایشی ساخت، بدون اینکه سیستم اصلی تغییر کند.
مثلاً:
Ubuntu Host
|
+---- Debian Chroot
نکته امنیتی مهم
Chroot یک Sandbox کامل نیست.
Chroot فقط دید پردازش نسبت به فایلسیستم را تغییر میدهد.
اما:
❌ Kernel جدا ایجاد نمیکند
❌ Processها را کاملاً جدا نمیکند
❌ منابع سیستم را محدود نمیکند
به همین دلیل نباید آن را با Container یا Virtual Machine اشتباه گرفت.
Escape از Chroot
یکی از موضوعات مهم امنیتی، بررسی امکان خروج از محیط Chroot است.
دلیل اصلی این است که Chroot همچنان از همان Kernel سیستم اصلی استفاده میکند:
Host Kernel
|
+-- Normal Process
|
+-- Chroot Process
همچنین مدیریت Deviceها در مسیر:
/dev
بسیار مهم است.
چون قرار دادن Deviceهای حساس مثل:
/dev/mem
/dev/sda
میتواند امنیت محیط را کاهش دهد.
@JustMyLogss
❤2
# | Just My Logs
توی این پست میخوایم با یکی از مفاهیم قدیمی ولی مهم در لینوکس آشنا بشیم: Chroot Jail کلمهی chroot مخفف عبارت زیر است: Change Root در لینوکس، هر پردازش یک مسیر ریشه (Root Directory) دارد که معمولاً با / مشخص میشود. این مسیر تعیین میکند یک برنامه از کجا شروع…
In Chroot Jail in Linux.pdf
478.8 KB
Eng version
@JustMyLogss
@JustMyLogss
❤2
A Telegram bot that uses an unofficial Truecaller API to look up phone number information instantly. It's an alternative for occasional use of Truecaller than running their app in background all the time.
https://github.com/ni554n/truecallerjs_bot
https://github.com/ni554n/truecallerjs_bot
GitHub
GitHub - ni554n/truecallerjs_bot: A Telegram bot to lookup phone number info via Truecaller API
A Telegram bot to lookup phone number info via Truecaller API - ni554n/truecallerjs_bot
Forwarded from cyru55 team
⭕️ FSearch
یک ابزار جستجوی بسیار قدرتمند، شبیه برنامه Everything ویندوز؛ اما بسیار قویتر، سریعتر و حتی دارای قابلیتهای بیشتر
✅ Open Source
📝 C
⬇️ Download
☑️ Ubuntu PPA
☑️ Arch AUR
☑️ Fedora/RHEL
☑️ Debian
☑️ FreeBSD
یک ابزار جستجوی بسیار قدرتمند، شبیه برنامه Everything ویندوز؛ اما بسیار قویتر، سریعتر و حتی دارای قابلیتهای بیشتر
✅ Open Source
📝 C
🔻Features
▫️Instant (as you type)
▫️Wildcard support
▫️RegEx support
▫️Filter support
▫️Include,exclude folders
▫️Sort by name,path,size
▫️Customizable interface
▫️Advanced syntax Operators:
AND, OR, NOT, Grouping, etc
⬇️ Download
☑️ Ubuntu PPA
☑️ Arch AUR
☑️ Fedora/RHEL
☑️ Debian
☑️ FreeBSD
🔥2
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
اگه با ترمینال داری برنامه مینویسی اینجارو از دست نده توش کلی انیمشین برای لودینک ترمینال هستش.
نکته جالبش اینه که spinnerها stateless طراحی شدن و برنامتون رو کند نمیکنن. خود کتابخونه thread یا event loop جدا راه نمیندازه؛ تو با tick مشخص میکنی انیمیشن کِی جلو بره. این باعث میشه خیلی راحت با event loop و معماری برنامهت هماهنگش کنی:
github.com/ratatui/ratatui-spinner
@Linuxor
نکته جالبش اینه که spinnerها stateless طراحی شدن و برنامتون رو کند نمیکنن. خود کتابخونه thread یا event loop جدا راه نمیندازه؛ تو با tick مشخص میکنی انیمیشن کِی جلو بره. این باعث میشه خیلی راحت با event loop و معماری برنامهت هماهنگش کنی:
github.com/ratatui/ratatui-spinner
@Linuxor
Forwarded from CleverDevs (Mammad)
یه نفر اومده و یه موزیک پلیر لینوکس به اسم sung با cpp و qt نوشته که طراحی زیبا و ویژگی های باحالی داره
این موزیک پلیر هم سرویس هایی مثل Youtube رو ساپورت میکنه هم میتونید خودتون یه موزیک سرور (مثل jellyfin و Subsonic) راه بندازید و با این کلاینت بهش وصل بشید
یا اصلا میتونید از موزیک های لوکال خودتون استفاده کنید
قابلیتهایی مثل لیریک سینکشده، ترکیب آهنگهای لوکال و یوتیوب توی یه پلیلیست، و پشتیبانی از کاورهای متحرک رو هم داره که خودتون میتونید تستش کنید.
اوپن سورسه و برای نصب و استفاده میتونید به گیت هابش سر بزنید
https://github.com/yappologistic/Sung
#tools #music | <Yappologistic>
@CleverDevs - @CleverDevsGp
این موزیک پلیر هم سرویس هایی مثل Youtube رو ساپورت میکنه هم میتونید خودتون یه موزیک سرور (مثل jellyfin و Subsonic) راه بندازید و با این کلاینت بهش وصل بشید
یا اصلا میتونید از موزیک های لوکال خودتون استفاده کنید
قابلیتهایی مثل لیریک سینکشده، ترکیب آهنگهای لوکال و یوتیوب توی یه پلیلیست، و پشتیبانی از کاورهای متحرک رو هم داره که خودتون میتونید تستش کنید.
اوپن سورسه و برای نصب و استفاده میتونید به گیت هابش سر بزنید
https://github.com/yappologistic/Sung
#tools #music | <Yappologistic>
@CleverDevs - @CleverDevsGp
OOP در پایتون چیست؟
OOP مخفف Object-Oriented Programming یا «برنامهنویسی شیءگرا» است.
پایتون یک زبان شیءگراست و به ما اجازه میدهد کدهای خود را با استفاده از Class و Object ساختاربندی کنیم.
مزایای OOP:
ساختار منظمتر برنامه
نگهداری و دیباگ آسانتر کد
امکان استفاده مجدد از کد
کاهش کدهای تکراری
کمک به رعایت اصل DRY
اصل DRY مخفف Don't Repeat Yourself است؛ یعنی سعی کنیم یک بخش از کد را چندین بار تکرار نکنیم و در صورت نیاز، آن را داخل یک تابع یا کلاس قرار داده و دوباره استفاده کنیم.
Class و Object چیست؟
کلاس را میتوانیم مانند یک نقشه یا الگو برای ساخت Object در نظر بگیریم.
برای مثال:
و:
میتوانند Objectهایی بر اساس آن باشند.
مثال دیگر:
متد
متد
خروجی:
در این مثال، Object به نام
پارامتر
خروجی:
در اینجا
یک مثال ساده با کلاس Dog
خروجی:
در این مثال:
مفاهیم مهم OOP در پایتون:
Classes و Objects
Properties و Methods
Inheritance
Polymorphism
Encapsulation
Inner Classes
در ادامه یادگیری OOP، این مفاهیم به ما کمک میکنند برنامههای بزرگتر را به بخشهای کوچکتر و قابل مدیریت تقسیم کنیم و کدی بنویسیم که استفاده مجدد، توسعه و نگهداری آن سادهتر باشد.
@JustMyLogss
OOP مخفف Object-Oriented Programming یا «برنامهنویسی شیءگرا» است.
پایتون یک زبان شیءگراست و به ما اجازه میدهد کدهای خود را با استفاده از Class و Object ساختاربندی کنیم.
مزایای OOP:
ساختار منظمتر برنامه
نگهداری و دیباگ آسانتر کد
امکان استفاده مجدد از کد
کاهش کدهای تکراری
کمک به رعایت اصل DRY
اصل DRY مخفف Don't Repeat Yourself است؛ یعنی سعی کنیم یک بخش از کد را چندین بار تکرار نکنیم و در صورت نیاز، آن را داخل یک تابع یا کلاس قرار داده و دوباره استفاده کنیم.
Class و Object چیست؟
کلاس را میتوانیم مانند یک نقشه یا الگو برای ساخت Object در نظر بگیریم.
برای مثال:
Fruit یک Class است.و:
AppleBananaMangoمیتوانند Objectهایی بر اساس آن باشند.
مثال دیگر:
Car → ClassVolvo، Audi و Toyota → Objectمتد
__init__()متد
__init__() هنگام ایجاد یک Object به صورت خودکار اجرا میشود و معمولاً برای مقداردهی اولیه به ویژگیهای Object استفاده میشود.class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Emil", 36)
print(p1.name)
print(p1.age)
خروجی:
Emil
36
در این مثال، Object به نام
p1 ایجاد شده و مقدار name برابر Emil و مقدار age برابر 36 است.پارامتر
self چیست؟self به Object فعلی اشاره میکند و با استفاده از آن میتوانیم به ویژگیها و متدهای همان Object دسترسی داشته باشیم.class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print("Hello, my name is " + self.name)
p1 = Person("Emil", 25)
p1.greet()
خروجی:
Hello, my name is Emil
در اینجا
self.name به ویژگی name مربوط به همان Object اشاره میکند.یک مثال ساده با کلاس Dog
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(self.name + " says Woof!")
d1 = Dog("Buddy", 3)
d1.bark()
خروجی:
Buddy says Woof!
در این مثال:
Dog → Classd1 → Objectname و age → Propertiesbark() → Method__init__() → متد مقداردهی اولیهself → اشاره به Object فعلیمفاهیم مهم OOP در پایتون:
Classes و Objects
__init__()selfProperties و Methods
Inheritance
Polymorphism
Encapsulation
Inner Classes
در ادامه یادگیری OOP، این مفاهیم به ما کمک میکنند برنامههای بزرگتر را به بخشهای کوچکتر و قابل مدیریت تقسیم کنیم و کدی بنویسیم که استفاده مجدد، توسعه و نگهداری آن سادهتر باشد.
@JustMyLogss
🔥1
In-Place Upgrade یا Clean Installation؟
وقتی قرار هست یک Windows Server رو به نسخه جدیدتر ارتقا بدیم، معمولاً با دو انتخاب روبهرو هستیم:
In-Place Upgrade
یا
Clean Installation + Migration
در نگاه اول شاید تفاوتشون فقط روش نصب ویندوز به نظر بیاد، ولی در محیط واقعی، انتخاب بین این دو میتونه روی Downtime، سرویسها، Applicationها و حتی مدیریت سرور در آینده تأثیر بذاره.
In-Place Upgrade
در این روش، همون Server فعلی رو مستقیماً به نسخه جدید ارتقا میدیم.
مثلاً:
مزیت اصلی این روش اینه که بخش زیادی از Configuration، Roleها، Featureها و Applicationهای فعلی حفظ میشن.
در نتیجه معمولاً Migration کمتری داریم و Downtime هم میتونه کمتر باشه.
اما یک نکته مهم وجود داره:
In-Place Upgrade قرار نیست محیط فعلی رو تمیز کنه.
اگر روی Server از قبل Configuration اشتباه، Dependency قدیمی، سرویس ناسازگار یا حتی یک مشکل ناشناخته وجود داشته باشه، ممکنه بعد از Upgrade هم همچنان وجود داشته باشه.
یعنی عملاً محیط فعلی رو با تمام وابستگیهاش وارد نسخه جدید میکنیم.
Clean Installation
اینجا رویکرد کاملاً متفاوت هست.
یک Windows Server جدید رو از صفر نصب میکنیم و بعد سرویسها و اطلاعات موردنیاز رو به محیط جدید منتقل میکنیم.
این روش طبیعتاً کار بیشتری داره، اما یک مزیت مهم داره:
از ابتدا دقیقاً میدونیم چه چیزی روی Server جدید نصب و Configure شده.
در واقع Clean Install فقط نصب مجدد Windows نیست؛ میتونه فرصتی باشه برای اینکه Configurationهای قدیمی و غیرضروری رو هم شناسایی و حذف کنیم.
البته Migration هم بدون دردسر نیست.
مواردی مثل:
• Permissionها
• Certificateها
• DNS
• Firewall Rules
• Scheduled Tasks
• Service Dependencies
• Application Configuration
• Backup و Monitoring Agentها
همگی باید قبل از Migration بررسی بشن.
پس کدوم روش رو انتخاب کنیم؟
جوابش به شرایط Server بستگی داره.
اگر Server وضعیت Stable داشته باشه، Applicationها با نسخه جدید سازگار باشن، Dependencyها مشخص باشن و Downtime محدودی داشته باشیم، In-Place Upgrade میتونه انتخاب مناسبی باشه.
اما اگر Server قدیمی و پیچیده باشه، Configurationهای زیادی داشته باشه یا دقیقاً ندونیم چه چیزهایی طی سالها روی اون تغییر کرده، ساختن یک Server جدید و Migration کردن سرویسها کنترل بیشتری روی محیط نهایی میده.
در نهایت، چیزی که قبل از Upgrade اهمیت بیشتری از خود Upgrade داره، Preparation و Recovery Plan هست.
قبل از شروع باید بدونیم:
چه چیزهایی باید Backup بشن؟
چه Dependencyهایی داریم؟
چقدر Downtime قابل قبوله؟
اگر Upgrade شکست خورد، Rollback چطور انجام میشه؟
و مهمتر از همه، آیا Backup واقعاً قابل Restore هست؟
چون داشتن Backup با داشتن یک Backup قابل بازیابی، دو چیز کاملاً متفاوت هستن.
#WindowsServer #SysAdmin #Infrastructure #Server #InPlaceUpgrade #CleanInstall
@JustMyLogss
وقتی قرار هست یک Windows Server رو به نسخه جدیدتر ارتقا بدیم، معمولاً با دو انتخاب روبهرو هستیم:
In-Place Upgrade
یا
Clean Installation + Migration
در نگاه اول شاید تفاوتشون فقط روش نصب ویندوز به نظر بیاد، ولی در محیط واقعی، انتخاب بین این دو میتونه روی Downtime، سرویسها، Applicationها و حتی مدیریت سرور در آینده تأثیر بذاره.
In-Place Upgrade
در این روش، همون Server فعلی رو مستقیماً به نسخه جدید ارتقا میدیم.
مثلاً:
Windows Server 2019 → Windows Server 2022مزیت اصلی این روش اینه که بخش زیادی از Configuration، Roleها، Featureها و Applicationهای فعلی حفظ میشن.
در نتیجه معمولاً Migration کمتری داریم و Downtime هم میتونه کمتر باشه.
اما یک نکته مهم وجود داره:
In-Place Upgrade قرار نیست محیط فعلی رو تمیز کنه.
اگر روی Server از قبل Configuration اشتباه، Dependency قدیمی، سرویس ناسازگار یا حتی یک مشکل ناشناخته وجود داشته باشه، ممکنه بعد از Upgrade هم همچنان وجود داشته باشه.
یعنی عملاً محیط فعلی رو با تمام وابستگیهاش وارد نسخه جدید میکنیم.
Clean Installation
اینجا رویکرد کاملاً متفاوت هست.
یک Windows Server جدید رو از صفر نصب میکنیم و بعد سرویسها و اطلاعات موردنیاز رو به محیط جدید منتقل میکنیم.
این روش طبیعتاً کار بیشتری داره، اما یک مزیت مهم داره:
از ابتدا دقیقاً میدونیم چه چیزی روی Server جدید نصب و Configure شده.
در واقع Clean Install فقط نصب مجدد Windows نیست؛ میتونه فرصتی باشه برای اینکه Configurationهای قدیمی و غیرضروری رو هم شناسایی و حذف کنیم.
البته Migration هم بدون دردسر نیست.
مواردی مثل:
• Permissionها
• Certificateها
• DNS
• Firewall Rules
• Scheduled Tasks
• Service Dependencies
• Application Configuration
• Backup و Monitoring Agentها
همگی باید قبل از Migration بررسی بشن.
پس کدوم روش رو انتخاب کنیم؟
جوابش به شرایط Server بستگی داره.
اگر Server وضعیت Stable داشته باشه، Applicationها با نسخه جدید سازگار باشن، Dependencyها مشخص باشن و Downtime محدودی داشته باشیم، In-Place Upgrade میتونه انتخاب مناسبی باشه.
اما اگر Server قدیمی و پیچیده باشه، Configurationهای زیادی داشته باشه یا دقیقاً ندونیم چه چیزهایی طی سالها روی اون تغییر کرده، ساختن یک Server جدید و Migration کردن سرویسها کنترل بیشتری روی محیط نهایی میده.
در نهایت، چیزی که قبل از Upgrade اهمیت بیشتری از خود Upgrade داره، Preparation و Recovery Plan هست.
قبل از شروع باید بدونیم:
چه چیزهایی باید Backup بشن؟
چه Dependencyهایی داریم؟
چقدر Downtime قابل قبوله؟
اگر Upgrade شکست خورد، Rollback چطور انجام میشه؟
و مهمتر از همه، آیا Backup واقعاً قابل Restore هست؟
چون داشتن Backup با داشتن یک Backup قابل بازیابی، دو چیز کاملاً متفاوت هستن.
#WindowsServer #SysAdmin #Infrastructure #Server #InPlaceUpgrade #CleanInstall
@JustMyLogss
🔥1
BIOS در مقابل UEFI؛ تفاوت نسل قدیم و جدید Firmware
وقتی یک سیستم را روشن میکنیم، قبل از اینکه ویندوز یا هر سیستمعامل دیگری اجرا شود، یک Firmware وظیفه راهاندازی اولیه سختافزار و آمادهکردن سیستم برای Boot شدن را بر عهده دارد.
دو فناوری اصلی در این زمینه BIOS و UEFI هستند. BIOS سالها استاندارد اصلی سیستمهای کامپیوتری بود، اما امروزه UEFI تقریباً جایگزین آن شده است.
در ادامه مهمترین تفاوتهای این دو را بررسی میکنیم.
1. زمان معرفی
BIOS از سال 1981 در کامپیوترهای شخصی مورد استفاده قرار گرفت و برای چندین دهه استاندارد اصلی فرآیند Boot سیستم بود.
در مقابل، اولین مشخصات UEFI در سال 2002 منتشر شد و بهعنوان نسل جدیدتر Firmware برای رفع محدودیتهای BIOS طراحی شد.
2. رابط کاربری
یکی از تفاوتهای قابل مشاهده بین BIOS و UEFI، رابط کاربری آنهاست.
در BIOS معمولاً با یک محیط Text-Based مواجه هستیم که بیشتر با استفاده از صفحهکلید کنترل میشود.
اما UEFI میتواند یک رابط گرافیکی (GUI) داشته باشد و علاوه بر صفحهکلید، از Mouse نیز پشتیبانی کند.
به همین دلیل تنظیمات UEFI معمولاً برای کاربران سادهتر و قابل فهمتر است.
3. معماری و محدودیت حافظه
BIOS یک Firmware قدیمی با معماری 16-bit است و در زمان Boot با محدودیتهای زیادی در دسترسی به حافظه مواجه میشود.
UEFI معماری مدرنتری دارد و میتواند در حالت 32-bit یا 64-bit اجرا شود؛ بنابراین محدودیتهای حافظه و محیط اجرایی آن بسیار کمتر از BIOS است.
این موضوع یکی از دلایل اصلی طراحی UEFI برای سختافزارهای مدرنتر است.
4. پشتیبانی از Partition
یکی از مهمترین تفاوتهای BIOS و UEFI مربوط به نحوه Boot شدن از روی دیسک است.
BIOS معمولاً با MBR (Master Boot Record) استفاده میشود.
MBR محدودیتهایی دارد که یکی از مهمترین آنها محدودیت حجم دیسک قابل استفاده برای Partition Table، در حالت متداول، حدود 2TB است.
در مقابل، UEFI از GPT (GUID Partition Table) پشتیبانی میکند.
GPT برای دیسکهای بسیار بزرگتر طراحی شده و محدودیت 2 ترابایتی MBR را ندارد.
بنابراین در سیستمهای جدید، ترکیب:
UEFI + GPT
استاندارد رایجتری محسوب میشود.
5. امنیت
BIOS بهصورت ذاتی قابلیتهای امنیتی مدرن زیادی ندارد.
در مقابل، UEFI امکان استفاده از قابلیتهایی مانند Secure Boot را فراهم میکند.
Secure Boot در زمان Boot شدن سیستم، صحت و اعتبار اجزای نرمافزاری مورد استفاده برای راهاندازی سیستم را بررسی میکند و میتواند از اجرای Bootloaderهای غیرمجاز جلوگیری کند.
این قابلیت در سیستمهای جدید و مخصوصاً محیطهای سازمانی اهمیت زیادی دارد.
6. Performance و سرعت Boot
BIOS به دلیل معماری قدیمیتر و محدودیتهای موجود، فرآیند Boot مدرن و بهینهای ندارد.
UEFI برای سختافزارهای جدید طراحی شده و میتواند فرآیند Boot را سریعتر و بهینهتر انجام دهد.
به همین دلیل در بسیاری از سیستمهای امروزی، استفاده از UEFI Boot باعث کاهش زمان راهاندازی سیستم نسبت به Legacy BIOS میشود.
@JustMyLogss
وقتی یک سیستم را روشن میکنیم، قبل از اینکه ویندوز یا هر سیستمعامل دیگری اجرا شود، یک Firmware وظیفه راهاندازی اولیه سختافزار و آمادهکردن سیستم برای Boot شدن را بر عهده دارد.
دو فناوری اصلی در این زمینه BIOS و UEFI هستند. BIOS سالها استاندارد اصلی سیستمهای کامپیوتری بود، اما امروزه UEFI تقریباً جایگزین آن شده است.
در ادامه مهمترین تفاوتهای این دو را بررسی میکنیم.
1. زمان معرفی
BIOS از سال 1981 در کامپیوترهای شخصی مورد استفاده قرار گرفت و برای چندین دهه استاندارد اصلی فرآیند Boot سیستم بود.
در مقابل، اولین مشخصات UEFI در سال 2002 منتشر شد و بهعنوان نسل جدیدتر Firmware برای رفع محدودیتهای BIOS طراحی شد.
2. رابط کاربری
یکی از تفاوتهای قابل مشاهده بین BIOS و UEFI، رابط کاربری آنهاست.
در BIOS معمولاً با یک محیط Text-Based مواجه هستیم که بیشتر با استفاده از صفحهکلید کنترل میشود.
اما UEFI میتواند یک رابط گرافیکی (GUI) داشته باشد و علاوه بر صفحهکلید، از Mouse نیز پشتیبانی کند.
به همین دلیل تنظیمات UEFI معمولاً برای کاربران سادهتر و قابل فهمتر است.
3. معماری و محدودیت حافظه
BIOS یک Firmware قدیمی با معماری 16-bit است و در زمان Boot با محدودیتهای زیادی در دسترسی به حافظه مواجه میشود.
UEFI معماری مدرنتری دارد و میتواند در حالت 32-bit یا 64-bit اجرا شود؛ بنابراین محدودیتهای حافظه و محیط اجرایی آن بسیار کمتر از BIOS است.
این موضوع یکی از دلایل اصلی طراحی UEFI برای سختافزارهای مدرنتر است.
4. پشتیبانی از Partition
یکی از مهمترین تفاوتهای BIOS و UEFI مربوط به نحوه Boot شدن از روی دیسک است.
BIOS معمولاً با MBR (Master Boot Record) استفاده میشود.
MBR محدودیتهایی دارد که یکی از مهمترین آنها محدودیت حجم دیسک قابل استفاده برای Partition Table، در حالت متداول، حدود 2TB است.
در مقابل، UEFI از GPT (GUID Partition Table) پشتیبانی میکند.
GPT برای دیسکهای بسیار بزرگتر طراحی شده و محدودیت 2 ترابایتی MBR را ندارد.
بنابراین در سیستمهای جدید، ترکیب:
UEFI + GPT
استاندارد رایجتری محسوب میشود.
5. امنیت
BIOS بهصورت ذاتی قابلیتهای امنیتی مدرن زیادی ندارد.
در مقابل، UEFI امکان استفاده از قابلیتهایی مانند Secure Boot را فراهم میکند.
Secure Boot در زمان Boot شدن سیستم، صحت و اعتبار اجزای نرمافزاری مورد استفاده برای راهاندازی سیستم را بررسی میکند و میتواند از اجرای Bootloaderهای غیرمجاز جلوگیری کند.
این قابلیت در سیستمهای جدید و مخصوصاً محیطهای سازمانی اهمیت زیادی دارد.
6. Performance و سرعت Boot
BIOS به دلیل معماری قدیمیتر و محدودیتهای موجود، فرآیند Boot مدرن و بهینهای ندارد.
UEFI برای سختافزارهای جدید طراحی شده و میتواند فرآیند Boot را سریعتر و بهینهتر انجام دهد.
به همین دلیل در بسیاری از سیستمهای امروزی، استفاده از UEFI Boot باعث کاهش زمان راهاندازی سیستم نسبت به Legacy BIOS میشود.
@JustMyLogss
🔥1