مجله ایرانیکاسرورآموزش سرور، هاست، وردپرس و شبکه
سرور مجازی

ساخت File Versioning شخصی بر روی سرور مجازی

ساخت File Versioning شخصی با Syncthing 2.1.5؛ بازیابی نسخه‌های قبلی فایل روی VPS Sync فایل یک مشکل مهم دارد: اگر فایل اشتباهی تغییر کند، نسخه خراب هم می‌تواند بین همه دستگاه‌ها پخش شود. برای…

ساخت File Versioning شخصی بر روی سرور مجازی
خلاصه سریع این آموزش

ساخت File Versioning شخصی با Syncthing 2.1.5؛ بازیابی نسخه‌های قبلی فایل روی VPS Sync فایل یک مشکل مهم دارد: اگر فایل اشتباهی تغییر کند، نسخه خراب هم می‌تواند بین همه…

۱۱ دقیقه مطالعه ۰ دیدگاه ۱۰ مهر ۱۴۰۵ آخرین به‌روزرسانی

فهرست مطالب

ساخت File Versioning شخصی با Syncthing 2.1.5؛ بازیابی نسخه‌های قبلی فایل روی VPS

Sync فایل یک مشکل مهم دارد: اگر فایل اشتباهی تغییر کند، نسخه خراب هم می‌تواند بین همه دستگاه‌ها پخش شود. برای همین در کنار Sync به File Versioning نیاز داریم؛ یعنی نسخه قبلی فایل قبل از جایگزینی یا حذف، برای مدتی نگه‌داری شود تا امکان برگشت وجود داشته باشد.

در این آموزش با Syncthing 2.1.5 یک VPS را به Archive Node تبدیل می‌کنیم. لپ‌تاپ و کامپیوتر فایل‌ها را به VPS Sync می‌کنند و خود VPS نسخه‌های قبلی تغییراتی را که از دستگاه‌های دیگر دریافت می‌کند، داخل پوشه نسخه‌ها نگه می‌دارد.

📌 خروجی پروژه:

🔹 Sync فایل از چند دستگاه به VPS

🔹 نگهداری نسخه‌های قبلی فایل

🔹 بازیابی فایل حذف‌شده

🔹 Staggered Versioning برای مصرف منطقی Disk

🔹 GUI فقط از طریق SSH Tunnel

🔹 سرویس دائمی با systemd

File Versioning دقیقاً چیست؟

فرض کنید فایل report.xlsx امروز پنج بار ویرایش شده است. Sync معمولی فقط آخرین نسخه را میان دستگاه‌ها پخش می‌کند. Versioning قبل از جایگزینی نسخه قبلی، آن را در آرشیو نگه می‌دارد.

report.xlsx
report~20261002-093000.xlsx
report~20261002-101500.xlsx
report~20261002-114200.xlsx

Versioning با Backup فرق دارد

Versioning برای بازگشت سریع به نسخه قبلی عالی است، اما اگر خود VPS پاک شود، مهاجم به سرور دسترسی Root بگیرد یا Disk خراب شود، نسخه‌های قدیمی هم ممکن است از بین بروند.

بنابراین معماری بهتر سه لایه دارد:

🔹 Sync برای دسترسی روزمره

🔹 Versioning برای Undo سریع

🔹 Backup مستقل برای Disaster Recovery

مطلب مرتبط: Backup سرور با Restic

اگر هدفتان فقط نگه‌داشتن نسخه قبلی فایل نیست و به Backup مستقل، زمان‌بندی‌شده و قابل Restore نیاز دارید، آموزش بکاپ و بازیابی سرور با Backrest و Restic مکمل مناسبی برای این مقاله است.

روش‌های Versioning در Syncthing

روش کاربرد
Trash Can نگه‌داشتن آخرین فایل حذف یا جایگزین‌شده
Simple نگهداری تعداد مشخصی نسخه
Staggered نسخه‌های بیشتر برای زمان نزدیک و نسخه‌های پراکنده‌تر برای گذشته
External اجرای Script سفارشی هنگام جایگزینی فایل

برای Archive Node شخصی، Staggered Versioning انتخاب متعادلی است؛ نسخه‌های اخیر را با فاصله زمانی کمتر نگه می‌دارد و هرچه نسخه قدیمی‌تر شود فاصله نگهداری بیشتر می‌شود.

یک VPS همیشه‌روشن برای Sync و Versioning

مزیت VPS این است که Archive Node حتی وقتی کامپیوتر اصلی خاموش است در دسترس می‌ماند. برای فایل‌های شخصی معمولاً CPU زیادی نیاز نیست و ظرفیت Disk و پایداری شبکه اهمیت بیشتری دارد.

📌 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

مرحله اول: نصب Syncthing 2.x روی Ubuntu

برای دریافت شاخه Stable نسخه 2 از Repository رسمی استفاده کنید:

sudo apt update
sudo apt install curl ca-certificates -y

sudo mkdir -p /etc/apt/keyrings

sudo curl -L 
-o /etc/apt/keyrings/syncthing-archive-keyring.gpg 
https://syncthing.net/release-key.gpg

echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" 
| sudo tee /etc/apt/sources.list.d/syncthing.list

sudo apt update
sudo apt install syncthing -y

نسخه را بررسی کنید:

syncthing --version

مرحله دوم: ساخت User اختصاصی

sudo useradd \
  --system \
  --create-home \
  --shell /usr/sbin/nologin \
  syncserver

sudo mkdir -p /srv/sync/files

sudo chown -R syncserver:syncserver 
  /srv/sync

مرحله سوم: اجرای دائمی Syncthing

sudo systemctl enable \
  --now syncthing@syncserver.service

sudo systemctl status 
  syncthing@syncserver.service

مرحله چهارم: باز کردن GUI بدون عمومی کردن پورت 8384

GUI به‌طور پیش‌فرض روی localhost قرار دارد. همین حالت امن‌تر است. از کامپیوتر خود یک SSH Tunnel بسازید:

ssh -L 8384:127.0.0.1:8384 root@SERVER_IP

سپس Browser خود را باز کنید:

http://127.0.0.1:8384

برای GUI حتماً Username و Password مدیریتی تعریف کنید.

مرحله پنجم: Firewall

sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp

پورت 21027/UDP برای Local Discovery است و روی VPS اینترنتی معمولاً ضرورتی ندارد. GUI 8384 را نیز عمومی باز نمی‌کنیم.

مرحله ششم: اضافه کردن دستگاه‌ها

Syncthing روی هر Device یک Device ID تولید می‌کند. Client را روی کامپیوتر نصب کنید، Device ID آن را در VPS اضافه کنید و Device ID سرور را نیز به Client بدهید.

بعد Folder با مسیر زیر ایجاد کنید:

/srv/sync/files

مرحله هفتم: فعال کردن Staggered Versioning روی VPS

در تنظیمات Folder روی VPS وارد بخش File Versioning شوید و Staggered File Versioning را انتخاب کنید.

برای شروع می‌توانید Maximum Age را روی 365 روز قرار دهید. Syncthing نسخه‌های قبلی را به‌صورت پیش‌فرض در پوشه مخفی .stversions نگه می‌دارد.

⚠️ نکته‌ای که خیلی از آموزش‌ها نمی‌گویند: Versioning در Syncthing هنگام دریافت تغییر از Device دیگر اجرا می‌شود. اگر همان فایل را مستقیماً روی VPS ویرایش کنید، Syncthing نمی‌تواند نسخه Local قبلی را برایتان آرشیو کند. به همین دلیل VPS را Archive Node در نظر بگیرید و روی فایل‌های داخل آن مستقیم کار نکنید.

بازیابی نسخه قبلی فایل

در Web GUI از منوی Folder وارد بخش Restore Versions شوید. نسخه‌ها براساس زمان نمایش داده می‌شوند و می‌توانید نسخه مورد نظر را برگردانید.

در سطح فایل‌سیستم نیز نسخه‌ها داخل .stversions وجود دارند، اما بهتر است Restore را از خود Syncthing انجام دهید تا مسیر و نام فایل به‌درستی مدیریت شود.

آیا Versioning مقابل Ransomware کمک می‌کند؟

تا حدی. اگر باج‌افزار روی Laptop هزاران فایل را رمزگذاری کند و تغییرات به VPS Sync شوند، نسخه‌های قبلی روی VPS می‌توانند در .stversions باقی بمانند.

اما اگر مهاجم به خود VPS نیز دسترسی مدیریتی پیدا کند، Versionها هنوز Immutable نیستند. برای Protection قوی‌تر باید یک لایه Backup جدا و ترجیحاً Immutable داشته باشید.

مشکلات رایج

فایل‌ها Sync نمی‌شوند

Device ID، Folder ID، Permission مسیر /srv/sync و اتصال Port 22000 را بررسی کنید.

پوشه .stversions خیلی بزرگ شده

Retention را بی‌نهایت نگذارید مگر اینکه واقعاً Storage کافی داشته باشید. Staggered Versioning برای همین مسئله مناسب‌تر از نگه‌داشتن همه نسخه‌هاست.

نسخه فایل Local ساخته نشده

این رفتار طبیعی Syncthing است؛ Versioning روی تغییرات دریافت‌شده از Remote Device اعمال می‌شود.

Sync برقرار است ولی Versionها ساخته نمی‌شوند؟

اگر Permission، systemd، Firewall یا Folder Configuration باعث اختلال شده است، امکان بررسی و کانفیگ VPS وجود دارد.

📌 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

سؤالات متداول

File Versioning چیست؟

نگه‌داشتن نسخه‌های قبلی فایل هنگام جایگزینی یا حذف است تا امکان بازگشت وجود داشته باشد.

Syncthing نسخه فایل‌ها را کجا ذخیره می‌کند؟

به‌صورت پیش‌فرض در پوشه .stversions داخل Folder همگام‌شده.

Staggered Versioning چیست؟

روشی است که نسخه‌های جدید را با فاصله کمتر و نسخه‌های قدیمی را با فاصله زمانی بیشتر نگه می‌دارد تا مصرف Storage کنترل شود.

آیا Syncthing از فایل Local هم نسخه می‌گیرد؟

خیر؛ Versioning مربوط به تغییراتی است که از Device دیگر دریافت می‌شوند.

آیا File Versioning جای Backup است؟

خیر. برای خرابی کامل سرور، حذف عمدی و حمله به خود VPS به Backup مستقل نیاز دارید.

جمع‌بندی

Syncthing می‌تواند VPS را به یک Archive Node سبک تبدیل کند؛ دستگاه‌ها فایل‌ها را به سرور Sync می‌کنند و Staggered Versioning نسخه‌های قبلی تغییرات دریافتی را نگه می‌دارد.

این روش برای اشتباهات روزمره، حذف ناخواسته و حتی بخشی از سناریوهای Ransomware مفید است، اما هنوز Backup Immutable نیست. Versioning را یکی از لایه‌های حفاظت بدانید، نه آخرین لایه.

ساخت WebDAV Server شخصی و امن با Apache؛ اتصال ویندوز، macOS و Linux به VPS

اگر می‌خواهید یک پوشه روی VPS مثل Drive شبکه در ویندوز، Finder در macOS یا File Manager لینوکس قابل استفاده باشد، WebDAV یکی از ساده‌ترین استانداردها برای این کار است.

در این آموزش یک WebDAV Server شخصی با Apache راه‌اندازی می‌کنیم، Authentication و HTTPS را فعال می‌کنیم و سپس از ویندوز، macOS و Linux به همان فضای فایل متصل می‌شویم.

⚠️ نکته امنیتی مهم در اکتبر ۲۰۲۶: آخرین نسخه Upstream فعلی Apache HTTP Server، نسخه 2.4.69 است که ۱ اکتبر ۲۰۲۶ منتشر شده و یک آسیب‌پذیری در mod_dav_fs نسخه‌های تا 2.4.68 را رفع می‌کند. اگر WebDAV را روی اینترنت قرار می‌دهید، بسته Apache سیستم‌عامل را حتماً به آخرین Security Update ارتقا دهید.

WebDAV چیست؟

WebDAV مجموعه‌ای از Extensionهای HTTP برای مدیریت فایل از راه دور است. علاوه بر GET، متدهایی مانند PUT، DELETE، MOVE، COPY، PROPFIND و Locking را در اختیار Client قرار می‌دهد.

در نتیجه برنامه‌ای که WebDAV را پشتیبانی می‌کند می‌تواند Folder روی Server را تقریباً شبیه یک فضای ذخیره‌سازی Remote مدیریت کند.

راهکار مناسب برای
WebDAV Mount ساده فایل روی سیستم‌ها و نرم‌افزارها
SFTP انتقال امن فایل و مدیریت سرور
Seafile Sync دائمی چنددستگاهی

اگر به FTP/SFTP سازمانی نیاز دارید

WebDAV برای Mount و دسترسی فایل مناسب است؛ اگر هدف شما File Transfer Server با FTP/SFTP، User Management و قابلیت‌های سازمانی است، مقاله آموزش نصب Serv-U روی ویندوز و لینوکس را هم ببینید.

پیش‌نیازها

🔹 Ubuntu 24.04 یا Debian

🔹 دامنه مثل dav.example.com

🔹 Apache با آخرین Security Update

🔹 HTTPS معتبر

WebDAV سبک است؛ Storage و شبکه مهم‌ترند

برای WebDAV شخصی معمولاً VPS سنگینی لازم نیست. اگر فایل‌های حجیم دارید، فضای Disk، I/O و پهنای باند را متناسب با نوع استفاده انتخاب کنید.

📌 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

مرحله اول: نصب Apache و ابزارها

sudo apt update
sudo apt upgrade -y

sudo apt install 
  apache2 
  apache2-utils 
  certbot 
  python3-certbot-apache 
  -y

نسخه را ببینید:

apache2ctl -v

نسخه بسته Ubuntu ممکن است شماره‌ای متفاوت از Upstream داشته باشد و Patchهای امنیتی را Backport کند. مهم این است که آخرین Security Update توزیع نصب شده باشد.

مرحله دوم: فعال کردن Moduleهای WebDAV

sudo a2enmod dav
sudo a2enmod dav_fs
sudo a2enmod auth_basic
sudo a2enmod ssl
sudo a2enmod headers

مرحله سوم: ساخت فضای فایل

sudo mkdir -p /srv/webdav
sudo mkdir -p /var/lib/dav

sudo chown -R www-data:www-data 
  /srv/webdav 
  /var/lib/dav

sudo chmod 750 /srv/webdav

مرحله چهارم: ساخت کاربر WebDAV

sudo htpasswd -c /etc/apache2/webdav.passwd ali

برای User دوم، گزینه -c را استفاده نکنید:

sudo htpasswd /etc/apache2/webdav.passwd sara
sudo chown root:www-data \
  /etc/apache2/webdav.passwd

sudo chmod 640 
  /etc/apache2/webdav.passwd

مرحله پنجم: کانفیگ VirtualHost

sudo nano \
/etc/apache2/sites-available/webdav.conf
DavLockDB /var/lib/dav/DavLock

<VirtualHost *:80>
    ServerName dav.example.com

    Alias /files /srv/webdav

    <Directory /srv/webdav>
        DAV On

        Options Indexes
        AllowOverride None

        AuthType Basic
        AuthName "Private WebDAV"

        AuthUserFile \
        /etc/apache2/webdav.passwd

        Require valid-user
    </Directory>

    Header always set \
    X-Content-Type-Options "nosniff"

    ErrorLog \
    ${APACHE_LOG_DIR}/webdav-error.log

    CustomLog \
    ${APACHE_LOG_DIR}/webdav-access.log combined
</VirtualHost>

Site را فعال کنید:

sudo a2ensite webdav.conf

sudo apache2ctl configtest

sudo systemctl reload apache2

مرحله ششم: HTTPS را قبل از استفاده واقعی فعال کنید

⚠️ Basic Authentication را روی HTTP عمومی استفاده نکنید. مستندات خود Apache نیز توصیه می‌کنند به‌جای اتکا به Digest Authentication قدیمی، Basic Authentication را داخل TLS/HTTPS استفاده کنید.

sudo certbot --apache -d dav.example.com

مرحله هفتم: تست WebDAV

curl \
  -u ali \
  -X PROPFIND \
  -H "Depth: 1" \
  https://dav.example.com/files/

Upload آزمایشی:

curl \
  -u ali \
  -T test.txt \
  https://dav.example.com/files/test.txt

اتصال Windows به WebDAV

در File Explorer وارد بخش This PC شوید و Map Network Drive را انتخاب کنید. آدرس را به شکل زیر وارد کنید:

https://dav.example.com/files/

اگر Client داخلی Windows با فایل‌های حجیم یا Authentication رفتار محدودکننده داشت، Clientهایی مثل Cyberduck یا rclone معمولاً کنترل بیشتری می‌دهند.

اتصال macOS

در Finder گزینه Go → Connect to Server را باز کنید و همین URL را وارد کنید:

https://dav.example.com/files/

Mount روی Linux با davfs2

sudo apt install davfs2 -y

sudo mkdir -p /mnt/webdav

sudo mount -t davfs 
https://dav.example.com/files/ 
/mnt/webdav

WebDAV و File Versioning

Apache WebDAV به‌تنهایی برای هر ویرایش فایل، History کامل ایجاد نمی‌کند. اگر Versioning می‌خواهید، باید Storage پشت آن Snapshot داشته باشد، از ابزار Backup استفاده کنید یا فایل‌ها را در لایه‌ای مثل Syncthing/Seafile مدیریت کنید.

امنیت WebDAV

✅ فقط HTTPS

✅ Apache به‌روز

✅ Password قوی

✅ محدود کردن Userهای مجاز

✅ Backup مستقل از /srv/webdav

✅ بررسی Access Log

WebDAV خطای 403، 405 یا Permission می‌دهد؟

Permission مسیر، فعال بودن dav_fs، SSL، Authentication و DavLockDB از موارد اصلی برای بررسی هستند.

📌 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

سؤالات متداول

WebDAV چیست؟

Extension استاندارد HTTP برای ایجاد، ویرایش و مدیریت فایل روی Server از راه دور است.

آیا WebDAV امن است؟

در صورت استفاده از HTTPS، Authentication مناسب و Server به‌روز می‌تواند برای کاربردهای شخصی و سازمانی کوچک مناسب باشد.

آیا WebDAV در Windows بدون نرم‌افزار اضافی کار می‌کند؟

Windows Client داخلی WebDAV دارد، هرچند برای برخی سناریوها Client تخصصی تجربه بهتری ارائه می‌دهد.

WebDAV بهتر است یا SFTP؟

برای Mount و Integration با اپلیکیشن‌ها WebDAV راحت است؛ برای مدیریت Server و انتقال فایل فنی، SFTP معمولاً انتخاب مستقیم‌تری است.

آیا WebDAV File Versioning دارد؟

خود Apache WebDAV به‌تنهایی سیستم کامل Version History نیست و باید Versioning یا Backup در لایه دیگری طراحی شود.

جمع‌بندی

Apache WebDAV راه ساده‌ای برای تبدیل بخشی از Storage سرور به فضای قابل Mount روی Windows، macOS و Linux است. نقطه کلیدی در ۲۰۲۶، امنیت است: Apache را به‌روز نگه دارید و Basic Authentication را فقط روی HTTPS استفاده کنید.

اشتراک‌گذاری مقاله
گفت‌وگو درباره آموزش

دیدگاه‌ها (۰)

هنوز دیدگاهی ثبت نشده است.

دیدگاه یا سؤال خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *