| task-sync(5) | User Manuals | task-sync(5) |
نام (NAME)
task-sync - بررسی و آموزش قابلیتهای گوناگون همگامسازی دادهها در task(1)
مقدمه (INTRODUCTION)
برنامه Taskwarrior
میتواند
وظایف شما
را با یک
سرور
همگامسازی
کند. این کار
چندین مزیت
به همراه
دارد:
- دسترسی به
وظایف شما
از چندین
سیستم
مختلف را که
"رپلیکا (replica)"
نامیده
میشوند
ممکن
میسازد.
- یک نسخه
پشتیبان از
وظایف شما
فراهم
میکند.
- در فضای
دیسک
صرفهجویی
میکند.
برای مثال، ممکن است بخواهید یک رپلیکا از وظایف خود روی لپتاپ و رپلیکای دیگری روی تلفن همراهتان داشته باشید.
نکته: یکی از اثرات جانبی همگامسازی این است که به محض همگام شدن تغییرات، دیگر نمیتوان آنها را واگردانی (undo) کرد. این بدان معناست که با هر بار اجرای عملیات همگامسازی، امکان واگردانی عملیاتهای قبلی از بین میرود.
مدیریت همگامسازی (MANAGING SYNCHRONIZATION)
افزودن یک رپلیکا (Adding a Replica)
برای افزودن یک رپلیکای جدید، یک رپلیکای تازه و خالی را دقیقاً مشابه رپلیکای موجود پیکربندی کرده و دستور `task sync` را اجرا کنید.
زمان همگامسازی (When to Synchronize)
برای همگامسازی با یک سرور، راهکار معمول اجرای دورهای دستور زیر است:
$ task sync
برای نمونه از طریق cron(8).
پیکربندی (CONFIGURATION)
برنامه Taskwarrior گزینههای متعددی برای همگامسازی وظایف شما فراهم میکند:
- با سروری که
به طور ویژه
برای
مدیریت
دادههای Taskwarrior
طراحی شده
است.
+ با
ارائهدهندگان
فضای
ذخیرهسازی
ابری. در حال
حاضر از هر
دو سرویس AWS و GCP
پشتیبانی
میشود.
- با یک فایل
محلی روی
دیسک.
- از طریق یک
مخزن گیت
(محلی یا از
راه دور).
برای اغلب این روشها، به یک کلید رمزنگاری محرمانه (encryption secret) برای رمزگذاری و رمزگشایی وظایف نیاز خواهید داشت. این مقدار میتواند هر رشته محرمانهای باشد و باید در تمامی رپلیکاهایی که وظایف را به اشتراک میگذارند یکسان باشد.
$ task config sync.encryption_secret <encryption_secret>
ابزارهایی مانند pwgen(1) میتوانند مقادیر محرمانه مناسبی تولید کنند.
سرور همگامسازی (Sync Server)
برای همگامسازی وظایف با یک سرور همگامسازی، به اطلاعات زیر از سوی مدیر سرور نیاز دارید:
- آدرس
اینترنتی (URL)
سرور (مانند
"https://tw.example.com/path")
- یک شناسه
کلاینت ("client_id")
که وظایف
شما را مشخص
میکند
برنامه Taskwarrior را با این جزئیات پیکربندی کنید:
$ task config sync.server.url <url> $ task config sync.server.client_id <client_id>
توجه داشته باشید که نشانی وب باید حتماً شامل پروتکل، مانند 'http://' یا 'https://' باشد.
$ task config sync.server.origin <origin>
یک مترادف منسوخشده برای "sync.server.url" است.
سکوی ابری گوگل (Google Cloud Platform)
برای همگامسازی وظایف با GCP، از کنسول GCP برای ایجاد یک پروژه جدید و درون آن پروژه یک باکت جدید در Cloud Storage استفاده کنید. تنظیمات پیشفرض باکت کفایت میکند.
احراز هویت در پروژه را با دستورات زیر انجام دهید:
$ gcloud config set project $PROJECT_NAME $ gcloud auth application-default login
سپس Taskwarrior را به این صورت پیکربندی کنید:
$ task config sync.gcp.bucket <bucket-name>
با این حال، اگر اطلاعات کاربری `application-default` شما قبلاً توسط برنامه دیگری استفاده میشود، میتوانید اطلاعات حساب سرویس (service account) اختصاصی خود را ارائه دهید.
برای شروع، در منوی ناوبری به بخش "IAM and Admin" رفته و سپس "Roles" را انتخاب کنید.
در نوار منوی بالای بخش "Roles"، روی "CREATE ROLE" کلیک کنید. یک نام و توضیح مناسب برای نقش جدید ارائه دهید.
با استفاده از فیلتر "Service:storage" (نه جعبه ورودی "Filter permissions by role") مجوزها را به نقش جدید اضافه کنید. مجوزهای زیر را انتخاب فرمایید:
- storage.buckets.create
- storage.buckets.get
- storage.buckets.update
- storage.objects.create
- storage.objects.delete
- storage.objects.get
- storage.objects.list
- storage.objects.update
نقش جدید خود را ایجاد کنید.
در نوار کناری سمت چپ، به "Service accounts" بروید.
در نوار منوی بالای بخش "Service accounts"، روی "CREATE SERVICE ACCOUNT" کلیک کنید. نام و توضیحات مناسب برای حساب سرویس جدید وارد نمایید. نقشی را که به تازگی ایجاد کردهاید انتخاب کرده و فرآیند ساخت حساب سرویس را تکمیل کنید.
اکنون در داشبورد حسابهای سرویس، وارد حساب سرویس جدید شده و در نوار منوی بالا "keys" را انتخاب کنید. روی "ADD KEY" کلیک کنید تا کلید جدیدی (یک کلید JSON) ایجاد و دانلود شود.
سپس Taskwarrior را به این صورت پیکربندی کنید:
$ task config sync.gcp.bucket <bucket-name> $ task config sync.gcp.credential_path <absolute-path-to-downloaded-credentials>
خدمات وب آمازون (Amazon Web Services)
برای همگامسازی وظایف با AWS، یک منطقه جغرافیایی نزدیک به خود را انتخاب کرده و از طریق کنسول AWS یک باکت جدید در S3 بسازید. تنظیمات پیشفرض باکت کفایت میکند. به طور خاص مطمئن شوید که هیچ خطمشی چرخه عمر (lifecycle policy) فعال نباشد، زیرا ممکن است اشیاء را به طور خودکار حذف کرده یا انتقال دهد و دسترسیپذیری دادهها را تحت تأثیر قرار دهد.
همچنین به یک کاربر AWS IAM با خطمشی زیر نیاز دارید، که در آن BUCKETNAME نام باکت شماست. یک کاربر مشترک میتواند برای چندین کلاینت Taskwarrior پیکربندی شود.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "TaskChampion",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::BUCKETNAME",
"arn:aws:s3:::BUCKETNAME/*"
]
}
]
}
برای ایجاد چنین کاربری، یک خطمشی جدید در کنسول IAM بسازید، گزینه JSON را در ویرایشگر خطمشی انتخاب کرده و خطمشی بالا را الصاق کنید. روی "Next" کلیک کرده و نامی مانند "TaskwarriorSync" به آن اختصاص دهید. سپس یک کاربر جدید با نام دلخواه بسازید، گزینه "Attach Policies Directly" را انتخاب کرده و خطمشی تازهایجادشده را برگزینید.
به کلیدهای دسترسی (access keys) پیکربندیشده برای این کاربر جدید نیاز دارید. کاربر را در فهرست کاربران پیدا کرده، زبانه "Security Credentials" را باز کنید، سپس روی "Create access key" کلیک کرده و مراحل را دنبال کنید.
در این مرحله، میتوانید نحوه ارائه اطلاعات کاربری به Taskwarrior را انتخاب فرمایید. سادهترین روش قرار دادن مستقیم آنها در پیکربندی Taskwarrior است:
$ task config sync.aws.region <region> $ task config sync.aws.bucket <bucket-name> $ task config sync.aws.access_key_id <access-key-id> $ task config sync.aws.secret_access_key <secret-access-key>
به عنوان روش جایگزین، میتوانید یک پروفایل AWS CLI با نام دلخواهی مانند "taskwarrior-creds" تنظیم کنید:
$ aws configure --profile taskwarrior-creds
شناسه کلید دسترسی (access key ID) و کلید دسترسی محرمانه (secret access key) را وارد کنید. منطقه پیشفرض و قالب خروجی اهمیتی ندارند. سپس Taskwarrior را به این صورت تنظیم کنید:
$ task config sync.aws.region <region> $ task config sync.aws.bucket <bucket-name> $ task config sync.aws.profile taskwarrior-creds
برای استفاده از منابع پیشفرض اعتبارنامه AWS مانند متغیرهای محیطی، پروفایل پیشفرض یا پروفایل نمونه (instance profile)، این متغیر را تنظیم نمایید:
$ task config sync.aws.region <region> $ task config sync.aws.bucket <bucket-name> $ task config sync.aws.default_credentials true
همگامسازی محلی (Local Synchronization)
برای بهرهمندی از ویژگی صرفهجویی در فضای دیسک بدون نیاز به راهاندازی سرور راه دور، امکان همگامسازی وظایف به صورت محلی وجود دارد. برای پیکربندی همگامسازی محلی:
$ task config sync.local.server_dir /path/to/sync
پیکربندی پیشفرض همگامسازی با پایگاهداده درون پوشه وظایف ("data.location") است.
همگامسازی با گیت (Git Synchronization)
برای همگامسازی وظایف با استفاده از یک مخزن گیت، مسیر مخزن محلی و شاخهای که باید استفاده شود را پیکربندی کنید:
$ task config sync.git.local_path /path/to/local/repo $ task config sync.git.branch taskchampion $ task config sync.encryption_secret <encryption_secret>
در صورتی که مخزن وجود نداشته باشد، ایجاد خواهد شد. توصیه میشود از یک شاخه اختصاصی استفاده کنید.
برای همگامسازی با مخزن راه دور (push و pull)، یک منبع راه دور (remote) را نیز تنظیم کنید:
$ task config sync.git.remote origin
منبع راه دور میتواند یک نام مشخص مانند "origin" یا نشانی کامل گیت مانند "git@myserver.com:/path/to/repo.git" باشد. احراز هویت تماماً توسط سامانه اعتبارسنجی گیت انجام میشود؛ برای همگامسازی با سرور راه دور، دستورات "git push" و "git pull" باید بدون درخواست تعاملی رمز عبور کار کنند (از کلیدهای SSH یا credential helper استفاده کنید).
امکان کارکرد آفلاین در حالی که منبع راه دور همچنان پیکربندی شده وجود دارد. هشدار: اگر رپلیکای دیگری نیز با منبع راه دور همگام شود، دیگر قادر نخواهید بود همگامسازی را از این رپلیکا به حالت قبل بازگردانید.
$ task config sync.git.local_only true
در صورتی که به یک باینری غیر استاندارد گیت نیاز باشد، مسیر آن قابل تعیین است:
$ task config sync.git.git_path /path/to/git
راهاندازی TASKCHAMPION-SYNC-SERVER
سرور همگامسازی TaskChampion یک سرور HTTP با قابلیت پشتیبانی از چند کاربر است. کاربران با شناسه کلاینت (client ID) شناسایی میشوند و کاربران دارای شناسههای مختلف کاملاً از یکدیگر مستقل هستند. دادههای وظایف توسط Taskwarrior رمزگذاری میشوند و سرور همگامسازی هرگز دادههای رمزنشده را نمیبیند.
این سرور در نشانی زیر توسعه داده میشود: https://github.com/GothenburgBitFactory/taskchampion-sync-server
افزودن کاربر جدید (Adding a New User)
برای افزودن یک کاربر جدید به سرور، یک شناسه کلاینت جدید با ابزارهایی مانند `uuidgen` یا تولیدکنندههای آنلاین UUID بسازید. نیازی به پیکربندی سرور برای این شناسه کلاینت جدید نیست: هر زمان که شناسه کلاینت جدیدی به سرور ارائه شود، سرور همگامسازی به طور خودکار کاربر جدیدی ایجاد میکند. شناسه را همراه با نشانی سرور به کاربر بدهید تا در پیکربندی Taskwarrior خود قرار دهد. کاربر باید کلید محرمانه رمزنگاری ("encryption_secret") اختصاصی خود را تولید کند.
جلوگیری از ایجاد وظایف تکراری دورهای (AVOIDING DUPLICATE RECURRING TASKS)
اگر چندین کلاینت اجرا میکنید که همگی با یک سرور همگامسازی میشوند، باید این دستور را روی کلاینت اصلی خود (کلاینتی که بیشتر استفاده میکنید) اجرا فرمایید:
$ task config recurrence on
و در سایر کلاینتها این دستور را اجرا کنید:
$ task config recurrence off
این پیکربندی شما را در برابر پیامدهای باگ تکرار و همگامسازی محافظت میکند.
روش جایگزین: خدمات اشتراکگذاری فایل (ALTERNATIVE: FILE SHARING SERVICES)
خدمات متعدد اشتراکگذاری فایل نظیر DropBox، Amazon S3، Google Drive، SkyDrive و موارد دیگر وجود دارند. این شیوه شامل نگهداری پوشه task. شما در یک پوشه مشترک تحت نظارت سرویس میزبانی فایل است.
همگامسازی سریع انجام میشود، هرچند در صورتی که اتصال شبکه قطع باشد و وظایف در دو مکان مختلف دستکاری شوند ممکن است شرایط تداخل (conflict) رخ دهد. دلیل این امر این است که سرویس اشتراک فایل تنها با ماهیت فایلها سر و کار دارد و روشی برای ادغام محتوای وظایف نمیشناسد. با پرهیز از تغییر همزمان یک وظیفه روی دو سیستم بدون انجام همگامسازی بین آنها، از این مشکل پیشگیری کنید.
راهاندازی صرفاً شامل ساخت پوشه و اصلاح متغیر پیکربندی data.location به این صورت است:
$ task config data.location /path/to/shared/directory
نقاط قوت:
- پشتیبانی
مناسب
کلاینتها
-
راهاندازی
ساده
- استفاده
شفاف و
آسان
نقاط ضعف:
- وظایف به
شکل مناسب
ادغام
نمیشوند
اعتبار و حق نشر (CREDITS & COPYRIGHTS)
حق نشر (C) 2006 - 2021 متعلق به T. Babej, P. Beckingham, F. Hernandez.
برنامه Taskwarrior تحت شرایط مجوز MIT توزیع میشود. برای اطلاعات بیشتر https://www.opensource.org/licenses/mit-license.php را ببینید.
همچنین ببینید (SEE ALSO)
task(1), taskrc(5), task-color(5)
برای اطلاعات بیشتر درباره Taskwarrior به منابع زیر مراجعه فرمایید:
- وبسایت رسمی در
- https://taskwarrior.org
- مخزن رسمی کد منبع در
- https://github.com/GothenburgBitFactory/taskwarrior
- تماس با پروژه از طریق رایانامه
- <support@GothenburgBitFactory.org>
گزارش باگها (REPORTING BUGS)
- باگهای Taskwarrior را میتوانید به بخش ردیابی مشکلات در نشانی زیر گزارش کنید:
- https://github.com/GothenburgBitFactory/taskwarrior/issues
| 2016-02-24 | task 3.5.0 |