← man/archiving_and_compression
cpio — man cpio — 80×24
ugur@toprak:~/man/archiving_and_compression$man cpio
Bölüm 1 Arşivleme & Sıkıştırma

cpio

arşivlere dosya kopyalama ve arşivlerden dosya çıkarma

Özet

      cpio -i [seçenekler] [şablon ...] [< arşiv]
      cpio -o [seçenekler] < isim-listesi [> arşiv]
      cpio -p [seçenekler] hedef-dizin < isim-listesi

Açıklama

cpio, arşivler ve dizinler arasında dosya kopyalar. Bu uygulama; tar, pax, cpio, zip, jar, ar ve ISO 9660 cdrom imajlarından çıkarma (extract) yapabilir ve tar, pax, cpio, ar ve shar arşivleri oluşturabilir.

cpio için ilk seçenek, aşağıdaki listeden bir mod göstergesidir:

  • -i: Girdi. Standart girdiden bir arşivi okur (aksine geçersiz kılınmadıkça) ve içeriği diske çıkarır veya (-t seçeneği belirtilmişse) içeriği standart çıktıda listeler. Bir veya daha fazla dosya şablonu belirtilirse, yalnızca şablonlardan biriyle eşleşen dosyalar çıkarılacaktır.
  • -o: Çıktı. Standart girdiden dosya isimlerinin bir listesini okur ve standart çıktıda (aksine geçersiz kılınmadıkça) belirtilen öğeleri içeren yeni bir arşiv üretir.
  • -p: Doğrudan geçiş (Pass-through). Standart girdiden dosya isimlerinin bir listesini okur ve dosyaları belirtilen dizine kopyalar.

Seçenekler

Özellikle aksi belirtilmedikçe, seçenekler tüm çalışma modlarında geçerlidir.

-0, --null Yeni satırlar yerine NUL karakterleriyle ayrılmış dosya isimlerini okur. Okunan dosya isimlerinden herhangi birinin yeni satır karakteri içerme olasılığı varsa bu gereklidir.

-6, --pwb İkili (binary) formatta bir arşiv okurken, bunun 6. Sürüm UNIX'in PWB varyantından kalan daha eski bir format olduğunu varsayar. Bir cpio arşivi yazarken PWB formatını kullanır.

-7, --binary (yalnızca o modunda) Bir cpio arşivi yazarken, (daha yeni, PWB olmayan) ikili formatı kullanır.

  • -A: (yalnızca o modunda) Belirtilen arşive ekleme (append) yapar. (Henüz uygulanmadı.)

  • -a: (o ve p modları) Dosyalar okunduktan sonra erişim sürelerini (access times) sıfırlar.

  • -B: (yalnızca o modunda) Çıktıyı 5120 baytlık kayıtlara bloklar.

-C boyut (yalnızca o modunda) Çıktıyı belirtilen bayt boyutundaki kayıtlara bloklar.

  • -c: (yalnızca o modunda) Eski POSIX taşınabilir karakter formatını kullanır. --format odc ile eşdeğerdir.

-d, --make-directories (i ve p modları) Gerektiğinde dizinleri oluşturur.

-E dosya (yalnızca i modunda) Listelemek ve çıkarmak için dosya şablonlarının listesini belirtilen dosyadan okur.

-F dosya, --file dosya Arşivi belirtilen dosyadan okur veya arşivi o dosyaya yazar.

-f şablon (yalnızca i modunda) Şablonla eşleşen dosyaları yoksayar.

-H format, --format format (yalnızca o modunda) Çıktı arşivini belirtilen formatta üretir. Desteklenen formatlar şunlardır:

cpio odc için eş anlamlıdır. newc SVR4 taşınabilir cpio formatı. odc Eski POSIX.1 taşınabilir sekizli yönelimli (octet-oriented) cpio formatı. pax ustar formatının bir uzantısı olan POSIX.1 pax formatı. ustar POSIX.1 tar formatı.

Varsayılan format odc'dir. Temel alınan libarchive(3) kütüphanesi tarafından şu anda desteklenen formatlar hakkında daha eksiksiz bilgi için libarchive-formats(5) sayfasına bakın.

-h, --help Kullanım bilgisini yazdırır.

-I dosya Arşivi belirtilen dosyadan okur.

-i, --extract Girdi modu. Açıklama için yukarıya bakın.

--insecure (yalnızca i ve p modlarında) Çıkarma veya kopyalama sırasında güvenlik kontrollerini devre dışı bırakır. Bu; sembolik bağlantılar, mutlak yollar ve isminde ‘..’ içeren yol isimleri aracılığıyla çıkarma yapılmasına izin verir.

-J, --xz (yalnızca o modunda) Dosyayı yazmadan önce xz uyumlu sıkıştırma ile sıkıştırır. Girdi modunda bu seçenek yoksayılır; xz sıkıştırması girdide otomatik olarak tanınır.

  • -j: -y ile eş anlamlıdır.

  • -L: (o ve p modları) Tüm sembolik bağlantılar takip edilecektir. Normalde sembolik bağlantılar, sembolik bağlantı olarak arşivlenir ve kopyalanır. Bu seçenekle, bunun yerine bağlantının hedefi arşivlenecek veya kopyalanacaktır.

-l, --link (yalnızca p modunda) Kopyalamak yerine, hedef dizinden orijinal dosyalara bağlantılar (links) oluşturur.

--lrzip (yalnızca o modunda) Elde edilen arşivi lrzip(1) ile sıkıştırır. Girdi modunda bu seçenek yoksayılır.

  • --lz4: (yalnızca o modunda) Arşivi yazmadan önce lz4 uyumlu sıkıştırma ile sıkıştırır. Girdi modunda bu seçenek yoksayılır; lz4 sıkıştırması girdide otomatik olarak tanınır.

  • --zstd: (yalnızca o modunda) Arşivi yazmadan önce zstd uyumlu sıkıştırma ile sıkıştırır. Girdi modunda bu seçenek yoksayılır; zstd sıkıştırması girdide otomatik olarak tanınır.

  • --lzma: (yalnızca o modunda) Dosyayı yazmadan önce lzma uyumlu sıkıştırma ile sıkıştırır. Girdi modunda bu seçenek yoksayılır; lzma sıkıştırması girdide otomatik olarak tanınır.

  • --lzop: (yalnızca o modunda) Elde edilen arşivi lzop(1) ile sıkıştırır. Girdi modunda bu seçenek yoksayılır.

--passphrase parola Parola, şifrelenmiş bir arşivi çıkarmak veya oluşturmak için kullanılır. Şu anda zip, cpio'nun şifreli arşivleri işleyebildiği tek format olup, bu seçeneğin kullanımının ne kadar güvensiz olduğunu fark etmediğiniz sürece bu seçeneği kullanmamalısınız.

-m, --preserve-modification-time (i ve p modları) Oluşturulan dosyalardaki dosya değişiklik zamanını, kaynaktakilerle eşleşecek şekilde ayarlar.

-n, --numeric-uid-gid (i modu, yalnızca -t ile) Sayısal uid ve gid değerlerini görüntüler. Varsayılan olarak cpio, arşivde sağlandığında kullanıcı ve grup isimlerini görüntüler veya sistem parola veritabanında kullanıcı ve grup isimlerini arar.

--no-preserve-owner (yalnızca i modunda) Dosya sahipliğini geri yüklemeye çalışmaz. Root olmayan kullanıcılar tarafından çalıştırıldığında varsayılan davranış budur.

-O dosya Arşivi belirtilen dosyaya yazar.

-o, --create Çıktı modu. Açıklama için yukarıya bakın.

-p, --pass-through Doğrudan geçiş modu. Açıklama için yukarıya bakın.

--preserve-owner (yalnızca i modunda) Dosya sahipliğini geri yükler. Root kullanıcısı tarafından çalıştırıldığında varsayılan davranış budur.

--quiet Gereksiz mesajları engeller.

-R [kullanıcı][:][grup], --owner [kullanıcı][:][grup] Çıktıdaki dosyaların sahibini ve/veya grubunu ayarlar. Grup bir kullanıcı olmadan belirtilirse (örneğin, -R :wheel), grup ayarlanır ancak kullanıcı ayarlanmaz. Kullanıcı, sonunda iki nokta üst üste ile ve grup olmadan belirtilirse (örneğin, -R root:), grup kullanıcının varsayılan grubuna ayarlanacaktır. Kullanıcı sonunda iki nokta üst üste olmadan belirtilirse, kullanıcı ayarlanır ancak grup ayarlanmaz. -i ve -p modlarında bu seçenek yalnızca süper kullanıcı tarafından kullanılabilir. (Uyumluluk için iki nokta üst üste yerine nokta da kullanılabilir.)

  • -r: (Tüm modlar.) Dosyaları etkileşimli olarak yeniden adlandırır. Her dosya için, /dev/tty aygıtına dosyanın adını içeren bir bilgi istemi yazılır ve /dev/tty aygıtından bir satır okunur. Okunan satır boşsa dosya atlanır. Satır tek bir nokta içeriyorsa dosya normal şekilde işlenir. Aksi takdirde, satır dosyanın yeni adı olarak kabul edilir.

-t, --list (yalnızca i modunda) Arşivin içeriğini standart çıktıya listeler; içeriği diske geri yüklemez.

-u, --unconditional (i ve p modları) Mevcut dosyaların üzerine koşulsuz olarak yazar. Normalde, daha eski bir dosya diskteki daha yeni bir dosyanın üzerine yazmaz.

-V, --dot İşlenen her dosya için standart hataya (stderr) bir nokta yazdırır. Yerini -v seçeneğine bırakmıştır.

-v, --verbose İşlenen her dosyanın adını standart hataya (stderr) yazdırır. -t seçeneğiyle birlikte, her dosyanın ayrıntılı bir listesini sunar.

--version Program sürüm bilgisini yazdırır ve çıkar.

  • -y: (yalnızca o modunda) Arşivi yazmadan önce bzip2 uyumlu sıkıştırma ile sıkıştırır. Girdi modunda bu seçenek yoksayılır; bzip2 sıkıştırması girdide otomatik olarak tanınır.

  • -Z: (yalnızca o modunda) Arşivi yazmadan önce compress uyumlu sıkıştırma ile sıkıştırır. Girdi modunda bu seçenek yoksayılır; sıkıştırma girdide otomatik olarak tanınır.

  • -z: (yalnızca o modunda) Arşivi yazmadan önce gzip uyumlu sıkıştırma ile sıkıştırır. Girdi modunda bu seçenek yoksayılır; gzip sıkıştırması girdide otomatik olarak tanınır.

Çıkış Durumu

cpio aracı başarı durumunda 0, bir hata oluştuğunda ise >0 değeriyle çıkar.

Ortam

Aşağıdaki ortam değişkenleri cpio'nun yürütülmesini etkiler:

LANG Kullanılacak yerel ayar. Daha fazla bilgi için environ(7) sayfasına bakın.

TZ Tarihleri görüntülerken kullanılacak saat dilimi. Daha fazla bilgi için environ(7) sayfasına bakın.

Örnekler

     cpio komutu geleneksel olarak find(1) komutuyla birlikte dosya hiyerarşilerini kopyalamak için
     kullanılır. Buradaki ilk örnek, tüm dosyaları src dizininden dest dizinine kopyalar:
	   find src | cpio -pmud dest

     find(1) komutunun seçeneklerini dikkatlice seçerek ve bunu diğer standart araçlarla birleştirerek,
     hangi dosyaların kopyalanacağı üzerinde çok hassas bir kontrol sağlamak mümkündür. Bu sonraki örnek,
     src dizininden dest dizinine 2 günden eski ve isimleri belirli bir şablonla eşleşen dosyaları kopyalar:
	   find src -mtime +2 | grep foo[bar] | cpio -pdmu dest

     Bu örnek, src dizininden dest dizinine 2 günden eski olan ve “foobar” kelimesini içeren dosyaları kopyalar:
	   find src -mtime +2 | xargs grep -l foobar | cpio -pdmu dest

Uyumluluk

i, o ve p mod seçenekleri ile a, B, c, d, f, l, m, r, t, u ve v seçenekleri SUSv2 ile uyumludur.

Eski POSIX.1 standardı, yalnızca -i, -o ve -p seçeneklerinin komut satırı seçeneği olarak yorumlanacağını belirtiyordu. Her biri, değiştirici karakterlerin bir listesinden oluşan tek bir argüman alıyordu. Örneğin, standart sözdizimi -imu seçeneğine izin verir ancak -miu veya -i -m -u seçeneklerini desteklemez; çünkü m ve u yalnızca -i seçeneğinin değiştiricileridir, kendi başlarına komut satırı seçenekleri değillerdir. Bu uygulama tarafından desteklenen sözdizimi standartla geriye dönük olarak uyumludur. En iyi uyumluluk için betiklerin kendilerini standart sözdizimiyle sınırlandırmaları gerekir.

Ayrıca Bakınız

bzip2(1), gzip(1), mt(1), pax(1), tar(1), libarchive(3), cpio(5), libarchive-formats(5), tar(5)

Standartlar

cpio komutu için mevcut bir POSIX standardı yoktur; ISO/IEC 9945-1:1996 (“POSIX.1”) standardında yer almış ancak IEEE Std 1003.1-2001 (“POSIX.1”) standardından çıkarılmıştır.

cpio, ustar ve pax değişim dosya formatları, pax komutu için IEEE Std 1003.1-2001 (“POSIX.1”) tarafından tanımlanmıştır.

Geçmiş

Orijinal cpio ve find araçları, AT&T'nin Unix Destek Grubu'nda çalışırken Dick Haight tarafından yazılmıştır. İlk olarak 1977'de, AT&T bünyesinde kullanılmak üzere geliştirilen “Programmer's Work Bench” sistemi olan PWB/UNIX 1.0 sürümünde yer almışlardır. AT&T dışında ilk kez 1981'de System III Unix'in bir parçası olarak yayınlanmışlardır. Sonuç olarak cpio, AT&T dışında bir süre sonrasına kadar pek tanınmasa da aslında tar komutundan daha eskidir.

Bu, libarchive(3) kütüphanesine dayanan tamamen yeniden yapılmış bir uygulamadır.

Hatalar (Bugs)

cpio arşiv formatının birkaç temel sınırlaması vardır: Kullanıcı ve grup isimlerini saklamaz, yalnızca sayıları saklar. Sonuç olarak, farklı kullanıcı ve grup numaralandırmasına sahip sistemler arasında güvenilir bir şekilde dosya aktarmak için kullanılamaz. Daha eski cpio formatları, kullanıcı ve grup numaralarını 16 veya 18 bit ile sınırlar ki bu modern sistemler için yetersizdir. cpio arşiv formatları, 8 gigabayta kadar olan dosyaları destekleyebilen “odc” varyantı hariç, 4 gigabaytın üzerindeki dosyaları destekleyemez.

macOS 26.4 16 Eylül 2014 macOS 26.4