تنظیم گواهینامه امنیتی SSL برای Remote Desktop

تنظیم گواهینامه امنیتی SSL برای Remote Desktop

2.7kviews

اگر شما هم می‌خواهید زمانی که به سرور مورد نظر خود ریموت می‌زنید، با اخطار گواهینامه امنیتی مواجه نشوید و از آن مهم‌تر از ارتباط به سیستم مورد نظر خود اطمینان حاصل نمایید، می‌توانید به مطالعه این آموزش به هدف خود دست یابید.

تنظیم گواهینامه امنیتی SSL برای Remote Desktop

ابتدا لازم است متناسب با نامه FQDN سرور و یا کلاینت خود یک گواهینامه امنیتی دریافت کنید. روش دریافت این گواهینامه در این مقاله درج نشده است اما در هر زمان می‌توانید با تماس با ما نسبت به دریافت راهنمایی اقدام نمائید و یا از راه ساده‌تری به نام Google استفاده کنید!

پس از تهیه و خرید گواهینامه SSL و نصب آن در مخزن کامپیوتر:

Remote Desktop

با استفاده از دستور پاورشل زیر یا مطابق تصویر Thumbprint را آن را به دست آورید:

Get-ChildItem Cert:\LocalMachine\My

Remote Desktop

سپس با استفاده از دستور زیر نسبت به تغییر آن اقدام نمائید:

wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"

به جای THUMBPRINT مقدار دریافت شده را قرار دهید:

wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="817CFA9F16AC22CB85B61B6AEE25153B3EC5DCC6"

پس از آن سیستم خود را یک‌بار ری‌استارت کنید، حالا گواهینامه امنیتی مورد نظر شما فعال شده است.

این دستور مقدار زیر را در Registry تغییر می‌دهد:

Registry path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
Value name: SSLCertificateSHA1Hash
Value type: REG_BINARY
Value data: certificate thumbprint

مدیریت IIS: فعال‌سازی و تنظیم IIS توسط PowerShell از راه دور

3.4kviews
مدیریت IIS سرورهای وب  از طریق GUI در صورتی که دسترسی به سرور داشته باشید بسیار ساده است، اما اگر شما نیز مثل من تعداد زیادی WebServer در موقعیت‌های مختلف و یا Cloud دارید دسترسی به کنسول سرور دشوار و یا بدتر از آن از RDP برای مدیریت آن‌ها استفاده می‌کنید که این روش شما اصلا منطقی و در راستای بهترین راه‌کارهای پیشنهاد توسط مایکروسافت نیست. راه‌کار بسیار بهتر و موثرتری برای مدیریت تعداد زیادی سرور از راه دور وجود دارد که همانا PowerShell Remoting برای مدیریت IIS است.


مراحل کار:

اگر قبلا این کار را از طریق GUI انجام داده‌اید در جریان مراحل انجام کار هستید، از طریق PowerShell نیز انجام این مراحل به همان شکل است با این تفاوت که بسیار سریعتر و کم‌دردسرتر است. ترتیب اجرای موارد به صورت زیر است:
۱- برقراری یک ارتباط (Session) با هر سرور
۲- نصب IIS Management Service
۳- فعال‌سازی IIS Management Service
۴- استارت سرویس WMSVC
۵- جایگزینی گواهینامه امنیتی Self-Signed
۶- اتصال از طریق IIS Manager

 

در این آموزش این سرویس را بر روی ۴ سرور مختلف با نام‌های web1,web2,web3 و web4 به صورت یک‌جا نصب خواهیم نمود.

۱- تعریف PowerShell Remoting برای Web Server ها برای مدیریت IIS

ابتدا یک متغیر با نام $Servers ایجاد می‌کنیم و تمامی نام‌های کامپیوترها را درون آن قرار می‌دهیم. شما نیز می‌توانید لیست آن‌ها را از یک فایل .csv و یا .txt نیز فراخوانی کنید. اگر سرورهای شما در Active Directory هستند می‌توانید با استفاده از دستور Get-ADComputer نیز سرورهای مقصد خود را شناسایی نمائید.
PS C:\ZAGRIO> $Servers = "web1,web2,web3,web4"
سپس یک Session به سمت هر سرور ایجاد می‌کنیم:
PS C:\ZAGRIO> $Sessions = New-PSSession -ComputerName $Servers

۲- نصب سرویس IIS Remote Management

با استفاده از دستور زیر برای تمامی سرورها سرویس IIS Remote Management را نصب میکنیم.
PS C:\ZAGRIO> Invoke-Command –Session $Sessions –ScriptBlock {Install-WindowsFeature Web-Mgmt-Service}

پس از نصب لازم است سرویس را فعال کنیم اما برای این کار cmdlet وجود ندارد

۳- فعال‌سازی سرویس Management Service برای مدیریت IIS

به صورت پیش‌فرض سرویس مدیریت IIS بر روی پورت ۸۱۲۷ فعال است. همچنین به صورت پیش‌فرض با نصب این سرویس یک گواهینامه امنیتی Self-Signed با مدت اعتبار ۱۰ سال نیز ایجاد می‌گردد. اگر در شبکه داخلی از این امکان می‌خواهید استفاده کنید این مورد اشکالی ندارد اما در ادامه به شما نشان خواهیم داد که به چه صورت آن را با یک گواهینامه امنیتی مورد اعتماد جایگرین نمائید. برای فعال‌سازی سرویس از دستور زیر استفاده می‌کنیم:

PS C:\ZAGRIO> Invoke-command –Session $Sessions -ScriptBlock{Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name EnableRemoteManagement -Value 1}
حال سرویس شما فعال شده است اما کماکان لازم است سرویس مورد نظرstart شود .

۴- روشن کردن سرویس Management Service

با استفاده از دستورات زیر سرویس را start کرده و در حالت Automatic نیز قرار می‌دهیم تا با هر بار restart شدن سرور، سرویس مجددا فعال شود.
PS C:\ZAGRIO> Invoke-command –Session $Sessions -ScriptBlock {Set-Service -name WMSVC -StartupType Automatic}

PS C:\ZAGRIO> Invoke-command –Session $Sessions -ScriptBlock {Start-service WMSVC}

در این مرحله شما امکان اتصال به سرویس فوق را از طریق سیستم دیگری خواهید داشت. اگر تمایل به جایگزین نمودن گواهینامه امنیتی دارید (عموما مشکلی وجود ندارد) می‌توانید با استفاده از دستورات زیر گواهینامه امنیتی را جایگزین نمائید.

۵- جایگزین کردن گواهینامه امنیتی برای مدیریت IIS

شما می‌توانید یک گواهینامه امنیتی معتبر را از یک سرویس‌دهنده و یا Active Directory Certificate Services برای مدیریت سرورهای داخلی دریافت کنید.
گواهینامه را با فرمت .pfx به همراه یک کلمه عبور ذخیره کنید سپس با استفاده از دستور CertUtil.exe آن را نصب نمائید.
ابتدا فایل را در هر سرور کپی کنید سپس:

PS C:\ZAGRIO> $Servers | Foreach-Object {Copy-Item -Path C:\Remote.Company.loc.pfx -Destination "\\$_\c$"}
PS C:\ZAGRIO> Invoke-Command -Session $Sessions {certutil -p P@ssw0rd -importpfx c:\Remote.company.loc.pfx}
توجه داشته باشید که رمز عبور به صورت PLAIN در کد وجود دارد با توجه به اینکه ارتباط PS Remoting امن و کدگذاری شده است جای نگرانی وجود ندارد اما پیشنهاد می‌شود در اسکریپت‌های خودکار از این مهم اجتناب کنید.
پس از نصب فایل‌های .pfx را به دلایل امنیتی حذف کنید:
PS C:\ZAGRIO> $Servers | Foreach-Object {Remove-Item -Path "\\$_\c$\remote.Company.loc.pfx"}
در این مرحله لازم است Thumbprint گواهینامه امنیتی نصب شده را دریافت و آن را با سرویس Management Service جایگزین نمائید. برای این کار به PSProvider مربوطه به IIS نیاز دارید. ماژول WebAdministration را با دستور زیر فراخوانی کنید:
PS C:\ZAGRIO> Invoke-Command -Session $Sessions {Import-Module WebAdministration}
Thumbprint گواهینامه امنیتی را دریافت کنید:
PS C:\ZAGRIO> Invoke-Command -Session $Sessions {$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where {$_.subject -like "*company*"} | Select-Object -ExpandProperty Thumbprint}
تنظیمات قبلی SSL Binding را حذف کنید:
PS C:\ZAGRIO> Invoke-command -Session $Sessions {Remove-Item -Path IIS:\SslBindings\0.0.0.0!8172}
تنظیمات جدید SSL Binding را اعمال کنید:
PS C:\ZAGRIO> Invoke-Command -Session $Sessions {Get-Item -Path "cert:\localmachine\my\$cert" | New-Item -Path IIS:\SslBindings\0.0.0.0!8172}
حالا شما آماده اتصال به سرور از طریق یک GUI دیگر هستید!

۶- اتصال به سرور از طریق IIS Manager

پنجره مدیریت IIS را باز کنید و در صفحه اصلی در سمت چپ بر روی …Connect to a server کلیک کنید، نام سرور و مشخصات کاربری و رمز عبور را وارد نمائید. حال مشخصات شما و سرور جدید در سمت چپ ایجاد خواهد شد.

پایان

هر چند تنظیمات SSL ممکن است کمی پیچیده و با دردسر باشد اما کل منطق کار بسیار ساده است. شخصا به دلیل استفاده از PowerShell DSC این مراحل را مانند زمان قدیم تکرار نمی‌کنم. PowerShell Desired State Configuration این امکان را به شما می‌دهد تا تمامی تنظیمات موردنیاز خود را فعال و تنظیم کنید. پیشنهاد می‌کنم از این امکان حتما بازدید و استفاده نمائید.

مدیریت از راه دور توسط Powershell(آموزش)

2.6kviews

یکی از ویژگی‌های کمتر شناخته شده در Windows PowerShell 2.0 این است که به راحتی می‌توانید انعطاف‌پذیری باورنکردی را به محیط خود اضافه کنید مدیریت از راه دور است. تصور اینکه کامپیوترهای مشتری‌های شما ویندوز XP را اجرا می‌کنند و domain controllers های شما از Windows Server 2003 استفاده می‌کنند هنوز یک سناریوی متداول است. شما می‌توانید از Windows PowerShell 2.0 برای هردوی این سیستم عامل‌ها استفاده کنید. اما ممکن است قادر به استفاده از جدیدترین ماژول‌های Windows PowerShell cmdlet نباشید. مانند ماژول Active Directory همراه با Windows Server 2008 R2. این ماژول‌های بر روی ورژن‌های قدیمی ویندوز اجرا نمی‌شوند. مشکل خاصی وجود ندارد. فقط ویندوز ۷ یا Windows Server 2008 R2 را بر روی یک کامپیوتر در محیط خودنصب کنید (ماژول اکتیو دایرکتوری در هرکدام از سیستم عامل‌ها اجرا خواهد شد).

به عنوان مثال شما می‌توانید یک Windows Server 2008 R2 domain controller را نصب کنید چرا که هردو ماژول Active Directory و خدمات Active Directory management gateway که با آن ارتباط برقرار می‌کنند را فراهم می‌کند. می‌توانید gateway service را دانلود کنید و آن را روی Windows Server 2008 و Windows Server 2003 نصب کنید.

با استفاده از Enable-PSRemoting در Windows PowerShell دسترسی از راه دور و WinRM را روی یک domain controller جدید تعریف کنید، سپس Windows PowerShell 2.0 را روی ویندوز XP یکی از کلاینت‌های خود فعال کنید و خودتان را برای انجام کارهای جادویی آماده کنید.

ساخت یک ماژول برای مدیریت از راه دور:

یا ایجاد یک جلسه Remote به domain controller جدید شروع کنید.

$session = New-PSSession -computerName my-new-dc

نام صحیح کامپیوتر را در محل my-new-dc وارد کنید. شما می‌توانید پارامترهای اضافی مانند alternate credentials یا پورت‌های alternate WinRM را مشخص کنید. برای جزئیات بیشتر help new-pssession را اجرا کنید.

در ادامه با استفاده از Remote به عنوان مثال به Windows PowerShell بگویید کهActive Directory cmdlets بارگذاری کند.

Invoke-command { import-module activedirectory } -session $session

قسمت جالب این است که شما بر روی همین سیستمی که از Windows PowerShell آن استفاده می‌کنید می‌توانید دستورات ماژول Active Directory را با استفاده از دستور زیر از سرور Remote بر روی کامپیوتر خود فراخوانی کنید.

Export-PSSession -session $session -commandname *-AD* -outputmodule RemAD -allowclobber

این دستور یک ماژول جدید از Windows PowerShell را در فولدر Documents زیر WindowsPowerShell\Modules\RemAD ایجاد می‌کند. فقط دستوراتی که نام آن‌ها با الگوی “*-AD*” مطابقت داشته باشد را شامل می‌شود. این یکی از بزرگترین دلایل دستورات افزودنی در استفاده از نوعی پیشوند مانند “AD” بعنوان بخشی از نام cmdlet است. انجام این کار باعث می‌شود گرفتن آن دسته از cmdlet ها آسانتر شود.

Cmdlet ها در واقع در کامپیوترهای محلی کپی نمی‌شوند. در عوض ماژول خدمات به صورت محلی یک shortcut ایجاد می‌کند. این cmdlet ها همیشه در remote domain controller اجرا خواهند شد اما به نظر می‌رسد که cmdlet ها به صورت محلی در حال اجرا است.

استفاده از cmdlet ها:

با حذف جلسه از remote domain controller شروع کنید:

Remove-PSSession -session $session

اکنون یک ماژول جدید را بارگذاری کنید:

Import-Module RemAD -prefix Rem

این دستور یک ماژول جدید به حافظه بارگذاری می‌کند و پیشوند “Rem” به نام هر cmdlet در آن ماژول اضافه خواهد شد. پیشوند یک راه خوب است تا برای شما یادآوری کنیم که این cmdlet ها به صورت Remote انجام می‌شوند. شما می‌توانید هر پیشوندی را که دوست دارید می‌توانید انتخاب کنید.

سعی کنید از یک remote cmdlet درخواست کمک کنید.

Help New-RemADUser

شما یک خطا را مشاهده می کنید زیرا یک remoting session بین کامپیوتر شما و domain controller که cmdlet ها در آن وجود دارند ایجاد نشده است. نیازی نیست که شما به طور واضح آن جلسه را شروع کنید. شما به طور ضمنی می‌توانید این کار را با اجرای یکی از remoted cmdlets انجام دهید:

Get-RemADUser -filter "Name -like 'D*'"

این دستور ارتباط remote را به domain controller و ارائه دستور برای اجرا و اجرای فرمان در domain controller را مجددا نمونه‌سازی خواهد کرد. سپس هر کاربری که نامش با ‘D’ شروع می‌شود را در XML مرتب می‌کند و به تمام شبکه کامپیوتر شما انتقال می‌دهد. شما می‌توانید آن‌ها از مرتبا به اشیاهایی که در خط لوله Windows PowerShell کار می‌کنند مرتب‌سازی نمائید. اکنون شما می‌توانید درخواست کمک کنید زیرا جلسه remote فعال است.

Help New-RemADUser

این جلسه فعال باقی می‌ماند تا زمانی که شما پوسته نمونه را ببندید یا ماژول را حذف نمائید.

Remove-Module RemAD

رسیدگی و مدیریت از راه دور:

Implicit remoting استفاده از cmdlet هایی که فقط بر روی کامپیوترهای راه دور برای مدیریت از راه دور موجود هستند را آسانتر می‌کند. implicitly remoted cmdlets رفتاری بسیار مشابه با زمانی که بر روی یک کامپیوتر محلی نصب شده باشند را دارند. این باعث می‌شود که هر زمان که به آن‌ها نیاز دارید در دسترس باشند. یک جلسه Remote نیاز به سربار کمی به روی کامپیوتر شما یا یک کامپیوتر راه دور دارد به‌طوری‌که این یک راه فوق‌العاده عملی برای توزیع محاسبات است.

چگونه از rsync برای همگام‌سازی دایرکتوری‌های Remote و Local روی یک VPS استفاده کنیم

2.5kviews

Rsync که پایه و اساس remote sync است، یک ابزار برای همگام‌سازی فایل‌های Local و Remote است. با استفاده از این الگوریتم مقدار اطلاعات کپی شده تنها با حرکت بخش‌هایی از فایلهایی که تغییر کرده‌اند به حداقل می‌رسد. در این مقاله کاربردهای اساسی این ابزار سودمند را ارائه می‌دهیم. ما در این مثال‌ها از سرور مجازی Ubuntu 12.04 استفاده می‌کنیم اما شما می‌توانید از هر توزیع لینوکس استفاده کنید.

Rsync چیست؟

Rsync یک ابزار بسیار منعطف برای همگام‌سازی شبکه‌های فعال است. شما همچنین برای استفاده از این ابزار می‌توانید به پروتکل توسعه‌یافته شبکه مراجعه کنید.

هنگامی‌که ما در این مقاله به Rsyns رجوع می‌کنیم درواقع به سودمندی این ابزار اشاره می‌کنیم نه پروتکل.

با توجه به اینکه لینوکس و سیستم‌های Unix-like در همه جا حضور دارند و به عنوان یک ابزار دارای اسکریپت سیستم، محبوبیت بسیاری دارند باعث شده که این مورد در اکثر توزیع‌های لینوکس به صورت پیش‌فرض قرار داده شود.

Basic Syntax

سوئیچ‌های پایه‌ای Rsync بسیار ساده هستند و اجرای آن‌ها شبیه به ssh, scp, و cp است.

ما می‌خواهیم دو دایرکتوری برای تست ایجاد کنیم و با دستورات زیر برخی از فایل‌ها را تست کنیم:

cd ~ mkdir dir1 mkdir dir2 touch dir1/file{1..100}

درحال حاضر ما یک دایرکتوری به نام dir1 با ۱۰۰ فایل خالی درون آن داریم.

ls dir1
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99

ما همچنین یک دایرکتوری خالی به نام dir2 داریم.

برای یکی کردن محتویات dir1 به dir2 در همان سیستم دستور زیر را تایپ کنید:

rsync -r dir1/ dir2

گزینه r- بر ای تمامی زیرپوشه‌ها نیزعمل می‌کند و برای یکی کردن دایرکتوری لازم است.

همچنین می‌توانیم از سوئیچ a- به جای آن استفاده کنیم.

rsync -a dir1/ dir2

گزینه a- یک سوئیچ ترکیبی است.

این یک پایه برای archive و همگام‌سازی به صورت بازگشتی و حفظ لینک‌های نمادین، فایل‌های دستگاه و خاص، زمان ویرایش، گروه، مالک و سطح دسترسی است.

به همین دلیل معمولا از r- استفاده می‌شود و این چیزی است که معمولا شما می‌خواهید استفاده کنید.

یک نکته مهم:

ممکن است که متوجه شده باشید که یک / در پایان اولین آرگومان در دستورات بالا وجود دارد.

rsync -a dir1/ dir2

این کار لازم است و به معنی محتویات درون dir1 است.

در موارد جایگزین، بدون/باید مکان dir1، محتوی دایرکتوری درون dir2 باشد. به این‌صورت سلسله مراتبی ایجاد می‌شود که مانند زیر به نظر می‌رسد:

~/dir2/dir1/[files]

همیشه آرگومان‌ها را قبل از اجرای یک دستور rsync مجددا چک کنید.

Rsync با عبور از گزینه‌های n- یا dir- روش‌هایی برای انجام این کار فراهم می‌کند. سوئیچ v- برای دریافت خروجی مناسب است.

rsync -anv dir1/ dir2
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .

این خروجی را با خروجی که هنگام حذف / بدست می آورید مقایسه کنید.

rsync -anv dir1 dir2
sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12
dir1/file13
dir1/file14
dir1/file15
dir1/file16
dir1/file17
dir1/file18
. . .

در این‎جا می‎بینید که دایرکتوری‌هایتان منتقل شدند.

چگونه از rsync برای همگام‌سازی یک Remote system استفاده کنیم؟

همگام‌سازی به یک Remote system بسیار واضح و بدیهی است اگر دسترسی SSH به یک remote machine داشته باشید و Rsync درهر دو سمت نصب شده باشد. اگر نیاز به راه‌اندازی کلید SSH دارید set up SSH keys را کلیک کنید.

هنگامی‌که شما دسترسی SSH بین دو ماشین دارید، می‌توانید قبل از remote computer با استفاده از syntax همگام سازی کنید ( توجه داشته باشید که ما می‌خواهیم دایرکتوری‌های واقعی را در این مورد انتقال دهیم، بنابراین / را حذف می کنیم).

rsync -a ~/dir1 username@remote_host:destination_directory

این کار Push عملیات نامیده می‌شود چون دایرکتوری را از یک سیستم Local به یک Remote سیستم فشار (Push) می‌دهد.

pull” عملیات مخالف با Push است. عمل Pull برای همگام‌سازی یک دایرکتوری از Remote سیستم به یک سیستم Local است. اگر dir1 به جای سیستم Local بر روی Remote سیستم قرار داشته باشد Syntax به صورت زیر است:

rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine

مانند CP و ابزارهای مشابه، اولین آرگومان به عنوان مبدا و دومین آرگومان مقصد است.

گزینه‌های مفید برای Rsync

Rsync گزینه‌های بسیاری برای تغییر رفتار پیش‌فرض ارائه می‌کند. ما در حال حاضر در مورد بعضی از پرچم‌های ضروری گفتگو می‌کنیم.

اگر شما درحال انتقال فایل‌هایی هستید که فشرده شده نیستند، مانند فایل‌های متنی، می‌توانید با اضافه کردن گزینه z- فایل‌ها را فشرده کنید و انتقال را کاهش دهید.

rsync -az source destination

سوئیچ p- خیلی مفید است. این سوئیچ ترکیب سوئیچ‌های progress — و partial — است. اولین مورد پیشرفت انتقال را نشان می‌دهد و دومی به شما اجازه می‌دهد تا انتقال قطع شده را مجددا ارسال کنید.

rsync -azP source destination
sending incremental file list
./
file1
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#2, to-check=98/101)
file100
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#3, to-check=97/101)
file11
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#4, to-check=96/101)

اگر دستور را دوباره اجرا کنیم خروجی کوتاه‌تری خواهیم داشت چون هیچ تغییری ایجاد نشده است.

این مورد قابلیت rsync را بیان می‌کند که با استفاده از تاریخ تغییر فایل‌ها بتواند مشخص کند که آیا تغییراتی بر روی فایل‌ها اعمال شده است یا نه.

rsync -azP source destination

sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00

ما می‌توانیم زمان اصلاح را در برخی از فایل‌ها بروزرسانی کنیم و می‌بینیم که Rsync هوشمندانه فایل‌های تغییر یافته را مجددا کپی می‌کند.

touch dir1/file{1..10}

rsync -azP source destination
sending incremental file list
file1
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#2, to-check=98/101)
file2
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#3, to-check=87/101)
file3
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#4, to-check=76/101)
. . .

به منظور این‌که هر دو دایرکتوری که به درستی همگام شده را حفظ کنیم، اگر این فایل‌ها از منبع حذف شده باشند لازم است که فایل‌ها را از دایرکتوری مقصد حذف کنیم. Rsync بطور پیش‌فرض هیچ فایلی را از دایرکتوری مقصد حذف نمی‌کند.
ما می‌توانیم این رفتار را با گزینه delete – تغییر دهیم. قبل از استفاده از این گزینه از گزینه dry –run- استفاده کنید و این تست را برای آزمایش از دست دادن اطلاعات انجام دهید.

rsync -a --delete source destination

اگر مایل به حذف فایل‌های خاص یا دایرکتوری واقع در دایرکتوری که درحال همگام‌سازی آن هستید می‌توانید بعد از گزینه –exclude= آنها را در یک لیست با کاما از هم جدا کنید.

rsync -a --exclude=pattern_to_exclude source destination

اگر ما یک الگوی مشخص برای حذف کردن داشته باشیم، می‌توانیم برای فایل‌هایی که با الگوی متفاوت مطابق هستند با استفاده از گزینه –include= استثنا ایجاد کنیم.

rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination

نتیجه

Rsync می‌تواند به سادگی فایل‌های شما را بر روی بستر شبکه منتقل کند و همچنین با قدرت بالا پوشه‌های موجود بر روی سیستم شما را همگام (sync) کند. انعطاف‌پذیری Rsync گزینه‌های خوبی برای عملیات بر روی فایل‌ها سطوح مختلف ایجاد می‌کند.