ساخت 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 استفاده کنید.






دیدگاهها (۰)