.nh .TH podman-cp 1 .SH "نام (NAME)" podman-cp \- کپی فایل‌ها یا پوشه‌ها بین کانتینر و سیستم محلی .SH "خلاصه دستور (SYNOPSIS)" \fBpodman cp\fP [\fIoptions\fP] [\fIcontainer\fP:]\fIsrc_path\fP [\fIcontainer\fP:]\fIdest_path\fP .PP \fBpodman container cp\fP [\fIoptions\fP] [\fIcontainer\fP:]\fIsrc_path\fP [\fIcontainer\fP:]\fIdest_path\fP .SH "توضیحات (DESCRIPTION)" دستور \fBpodman cp\fP امکان کپی کردن محتویات \fBsrc_path\fP به \fBdest_path\fP را فراهم می‌کند. فایل‌ها را می‌توان از یک کانتینر به سیستم محلی و بالعکس، یا بین دو کانتینر کپی کرد. اگر برای هر یک از \fBSRC_PATH\fR یا \fBDEST_PATH\fR مقدار \fB-\fR مشخص شود، همچنین می‌توان یک آرشیو tar را از \fBSTDIN\fR یا به \fBSTDOUT\fR استریم کرد. .PP کانتینرها می‌توانند در حال اجرا یا متوقف‌شده باشند و \fIsrc_path\fP یا \fIdest_path\fP می‌تواند یک فایل یا دایرکتوری باشد. .PP *نکته مهم: دستور \fBpodman cp\fP مسیرهای کانتینر را نسبت به دایرکتوری ریشه کانتینر (\fB/\fR) در نظر می‌گیرد؛ بدین معنا که درج اسلش آغازین اختیاری است و بنابراین \fBcompassionate_darwin:/tmp/foo/myfile.txt\fR و \fBcompassionate_darwin:tmp/foo/myfile.txt\fR را یکسان می‌داند.* .PP مسیرهای سیستم محلی می‌توانند مقداری مطلق یا نسبی باشند. این دستور، مسیرهای نسبی سیستم محلی را نسبت به دایرکتوری کاری جاری که \fBpodman cp\fP در آن اجرا شده است تفسیر می‌کند. .PP با فرض اینکه جداکننده مسیر \fB/\fR است، آرگومان اول \fBsrc_path\fP و آرگومان دوم \fBdest_path\fP باشد، رفتار دستور به شرح زیر خواهد بود: .PP \fBsrc_path\fP یک فایل را مشخص می‌کند: - \fBdest_path\fP وجود ندارد - فایل در یک فایل ایجادشده در \fBdest_path\fP ذخیره می‌شود (توجه داشته باشید که دایرکتوری والد باید وجود داشته باشد). - \fBdest_path\fP وجود دارد و یک فایل است - مقصد با محتویات فایل مبدا رونویسی می‌شود. - \fBdest_path\fP وجود دارد و یک دایرکتوری است - فایل با استفاده از نام پایه (base name) از \fBsrc_path\fP در این دایرکتوری کپی می‌شود. .PP \fBsrc_path\fP یک دایرکتوری را مشخص می‌کند: - \fBdest_path\fP وجود ندارد - \fBdest_path\fP به عنوان یک دایرکتوری ایجاد شده و محتویات دایرکتوری مبدا در این دایرکتوری کپی می‌شود. - \fBdest_path\fP وجود دارد و یک فایل است - وضعیت خطا: نمی‌توان یک دایرکتوری را روی یک فایل کپی کرد. - \fBdest_path\fP وجود دارد و یک دایرکتوری است - \fBsrc_path\fP با \fB/\fR پایان می‌یابد - دایرکتوری مبدا درون این دایرکتوری کپی می‌شود. - \fBsrc_path\fP با \fB/.\fR پایان می‌یابد (یعنی اسلش و به دنبال آن نقطه) - محتوای دایرکتوری مبدا درون این دایرکتوری کپی می‌شود. .PP این دستور ملزم می‌کند که \fBsrc_path\fP و \fBdest_path\fP بر اساس قوانین بالا وجود داشته باشند. .PP اگر \fBsrc_path\fP محلی باشد و یک پیوند نمادین (symbolic link) باشد، به صورت پیش‌فرض هدف نمادین کپی می‌شود. .PP یک \fIcolon\fP ( : ) به عنوان جداکننده بین یک کانتینر و مسیر آن استفاده می‌شود؛ همچنین می‌تواند هنگام مشخص کردن مسیرها برای \fBsrc_path\fP یا \fBdest_path\fP در سیستم محلی نیز استفاده شود، برای مثال \fBfile:name.txt\fR\&. .PP *نکته مهم: هنگام استفاده از \fIcolon\fP ( : ) در مسیر سیستم محلی، باید با یک مسیر نسبی یا مطلق صریح باشید، برای مثال: \fB/path/to/file:name.txt\fR یا \fB\&./file:name.txt\fR* .PP استفاده از \fB-\fR به عنوان \fBsrc_path\fP محتویات \fBSTDIN\fR را به صورت یک آرشیو tar استریم می‌کند. این دستور محتوای tar را در \fBDEST_PATH\fR درون کانتینر استخراج می‌کند. در این حالت، \fBdest_path\fP باید یک دایرکتوری را مشخص کند. استفاده از \fB-\fR به عنوان \fBdest_path\fP محتویات منبع (می‌تواند دایرکتوری باشد) را به صورت یک آرشیو tar به \fBSTDOUT\fR استریم می‌کند. .PP توجه داشته باشید که \fBpodman cp\fR هنگام کپی کردن از یک کانتینر بدون ریشه (rootless) در حال اجرا، خطاهای دسترسی را نادیده می‌گیرد. دستگاه‌های TTY درون یک کانتینر بدون ریشه متعلق به کاربر ریشه میزبان هستند و بنابراین نمی‌توان آن‌ها را درون فضای نام کاربری کانتینر خواند. .PP علاوه بر این توجه داشته باشید که \fBpodman cp\fR از تطبیق الگو (globbing) پشتیبانی نمی‌کند (مانند \fBcp dir/*.txt\fR). برای کپی کردن چندین فایل از میزبان به کانتینر، از xargs(1) یا find(1) (یا ابزارهای مشابه برای زنجیره‌سازی دستورات) همراه با \fBpodman cp\fR استفاده کنید. برای کپی کردن چندین فایل از کانتینر به میزبان، از \fBpodman mount CONTAINER\fR استفاده کرده و به جای آن روی نقطه اتصال بازگردانده شده عملیات انجام دهید (بخش روش‌های جایگزین در زیر را ببینید). .SH "گزینه‌ها (OPTIONS)" .SS \fB--archive\fP, \fB-a\fP حالت آرشیو (کپی کردن تمام اطلاعات UID/GID). هنگامی که روی true تنظیم شود، مالکیت فایل‌های کپی‌شده به کانتینر به UID/GID اصلی کانتینر تغییر می‌یابد. هنگامی که روی false تنظیم شود، UID/GID از منابع آرشیو حفظ می‌شود، به جای آنکه به UID/GID اصلی کانتینر مقصد تغییر داده شود. مقدار پیش‌فرض \fBtrue\fP است. .SS \fB--overwrite\fP امکان رونویسی دایرکتوری‌ها با غیر دایرکتوری‌ها و بالعکس را فراهم می‌کند. به صورت پیش‌فرض، \fBpodman cp\fR هنگام تلاش برای رونویسی، برای مثال یک فایل معمولی با یک دایرکتوری، با خطا مواجه می‌شود. .SH "روش‌های جایگزین (ALTERNATIVES)" دستور Podman قابلیت‌های بسیار قدرتمندتری نسبت به فقط \fBpodman cp\fR برای کپی کردن فایل‌ها بین میزبان و کانتینرها دارد. .PP استفاده از \fBpodman-mount(1)\fP و \fBpodman-unmount(1)\fP استاندارد امکان بهره‌گیری از کل زنجیره ابزارهای لینوکس را به جای صرفاً \fBcp\fR فراهم می‌کند. .PP کپی کردن محتویات به بیرون یا داخل یک کانتینر را می‌توان با چند دستور ساده انجام داد. برای مثال: .PP برای کپی کردن دایرکتوری \fB/etc/foobar\fR از درون یک کانتینر به \fB/tmp\fR روی میزبان، دستورات زیر را می‌توان اجرا کرد: .EX mnt=$(podman mount CONTAINERID) cp -R ${mnt}/etc/foobar /tmp podman umount CONTAINERID .EE .PP برای استخراج یک فایل tar درون یک کانتینر، دستورات زیر را می‌توان اجرا کرد: .EX mnt=$(podman mount CONTAINERID) tar xf content.tgz -C ${mnt} podman umount CONTAINERID .EE .PP برای نصب یک بسته درون کانتینری که dnf روی آن نصب نیست، دستورات زیر را می‌توان اجرا کرد: .EX mnt=$(podman mount CONTAINERID) dnf install --installroot=${mnt} httpd chroot ${mnt} rm -rf /var/log/dnf /var/cache/dnf podman umount CONTAINERID .EE .PP با استفاده از \fBpodman mount\fR و \fBpodman unmount\fR، می‌توان از تمام ابزارهای استاندارد لینوکس برای انتقال فایل‌ها به داخل و خارج کانتینرها استفاده کرد، نه فقط دستور \fBcp\fR. .SH "مثال‌ها (EXAMPLES)" کپی یک فایل از میزبان به یک کانتینر: .EX podman cp /myapp/app.conf containerID:/myapp/app.conf .EE .PP کپی یک فایل از یک کانتینر به یک دایرکتوری روی کانتینر دیگر: .EX podman cp containerID1:/myfile.txt containerID2:/tmp .EE .PP کپی یک دایرکتوری روی کانتینر به دایرکتوری روی میزبان: .EX podman cp containerID:/myapp/ /myapp/ .EE .PP کپی محتویات یک دایرکتوری روی کانتینر به دایرکتوری روی میزبان: .EX podman cp containerID:/home/myuser/. /home/myuser/ .EE .PP کپی یک دایرکتوری روی کانتینر به دایرکتوری روی کانتینر دیگر: .EX podman cp containerA:/myapp containerB:/newapp .EE .PP استریم یک آرشیو tar از \fBSTDIN\fR به یک کانتینر: .EX podman cp - containerID:/myfiles.tar.gz < myfiles.tar.gz .EE .SH "همچنین ببینید (SEE ALSO)" \fBpodman(1)\fP, \fBpodman-mount(1)\fP, \fBpodman-unmount(1)\fP