یکی از مسائلی که بعضا افرادی که دارای بیش از یک دستگاه کامپیوتر هستند باهاش درگیرند، اینه که میخواهند بعضی از اطلاعات رو روی هر دو سیستمشون داشته باشن. خوب این کار به سادگی یک کپی پیست با هر روش دلخواه بین دو کامپیوترشونه اما معضل اساسی وقتی شروع میشه که ما در یکی از کامپیوترهامون این اطلاعاتو تغییر بدیم و اون موقع است که دیگه کپی اون اطلاعات در کامپیوتر دیگه همگام و هماهنگ یا اصطلاحا sync با اطلاعات اصلی نیست. مثل همیشه در دنیای زیبای آزاد متن / باز برای رفع یک مشکل چندین روش وجود داره که هر کسی با هر کدومش حال کنه میتونه مشکلشو حل کنه، برای همگام سازی اطلاعات یا Synchronization در لینوکس برنامه های تخصصی ساخته شده مثل rsync ، conduit ، unison و ... اما خوب همونطور که گفتم زیبایی اینجا آزادی تو انتخاب روش حل مشکلتونه و من شخصا مشکلمو با یک کلاینته ftp حل کردم! این ابزار چیزی نیست جز lftp که یک ابزار انتقال فایل تحت خط فرمانه که علاوه بر پروتکل FTP از پروتکل های FTPS, HTTP, HTTPS, HFTP, FISH, و SFTP هم پشتیبانی میکنه. خوب فرض رو بر این میگیرم که اصل اطلاعات من روی لب تابم قرار داره و مدام هم همونجا اطلاعات رو تغییر میدم و یک نسخه از این اطلاعات رو هم روی یک سیستم دیگه دارم، البته با این فرض که اون کامیوتر دارای ftp server هست! یه چند تا فرض دیگه هم نیاز داریم برای آشنایی با یک مثال از همگام سازی اطلاعات پس: اطلاعات اصلی در لب تابم در مسیر /home/pesarkhobeee/mp3 قرار دارند. کپی اطلاعات در کامپیوتر دیگم در مسیر /public_html/mp3 قرار دارند. نام کاربری ftp کامپیوتر سرورم farid هست و کلمه عبور اون linux@zanjan . خوب حالا آماده ایم تا عمل همگام سازی رو انجام بدیم با دستور : echo 'mirror --reverse --delete --only-newer --verbose /home/pesarkhobeee/mp3 /public_html/mp3 ' | lftp -u farid,linux@zanjan zanjanlug.org و به همین راحتی اطلاعاتمون هماهنگ شد! اما بیایید دقیقتر به دستورمون نگاه کنیم و تک اک اجزاشو درک کنیم. الگوی کلی دستور این شکلیه: echo ' mirror [OPTS] [source [target]] ' | lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site] خوب قسمت وصل شدنش که نکته خاصی نداره میمونه دستوری که بهش پاس میدیم و گزینه های اون دستور: lftp واقعا ابزار منعطفیه که دستورات زیادی رو در اختیار ما میزاره . در اینجا ما از دستور mirror اون استفاده کردیم که برای هدف ما ناسب بود. گزینه --verbose برای نمایش اینکه دقیقا داره چه کارهایی میکنه! مثلا چه فایل های جدیدو انتقال داده و چه فایل های قدیمیو پاک کرده. گزینه --only-newer فقط فایلهای جدید رو دریافت میکند ( در مثال ما میفرسته ). گزینه --delete فایلهایی را که در سرور موجود نباشد اما در کلاین موجود باشد را پاک میکند ( در مثال ما بر عکس شده است ). گزینه --reverse در حقیقت اگر این گزینه نبود منبع اصلی فایلها سرور ما در نظر گرفته میشد اما با این گزینه منبع اصلی در مثال من لب تابم در نظر گرفته شد و فایلها ارسال میشوند بجای دریافت شدن در حالت معمولی . و تمام ! ما حالا ابزاریو میشناسییم که میتونیم بر اساس نیازمون اون رو استفاده کنیم. مثلا من نمونهای از دستور بالا رو برای همگام سازی یک سری اطلاعات در یک فایل bash نوشتم و به اون مجوز اجزایی دادم و با ترکیبی از کلید های صفحه کایدم اجرای اونو در مدیر پنجره i3 که استفاده میکنم bind کردم. و در آخر ذکر این نکته رو لازم میدونم که اگه هنگام کار با lftp این پیام رپ دریافت کردین: lftp --> Fatal error: Certificate verification: Not trusted برین داخل فایل زیر و set ssl:verify-certificate no رو اضافه کنید: ~/.lftp/rc