Özet
ditto [-v] [-V] [-X] [<options>] src ... dst_directory
ditto [-v] [-V] [<options>] src_file dst_file
ditto -c [-z | -j | -k] [-v] [-V] [-X] [<options>] src dst_archive
ditto -x [-z | -j | -k] [-v] [-V] [<options>] src_archive ... dst_directory
ditto -h | --help
Açıklama
İlk biçiminde ditto, bir veya daha fazla kaynak dosyayı ya da dizini bir hedef dizine kopyalar. Hedef
dizin mevcut değilse, ilk kaynak kopyalanmadan önce oluşturulur. Hedef dizin zaten mevcutsa, kaynak
dizinler hedefin önceki içeriğiyle birleştirilir.
İkinci biçiminde ditto, bir dosyayı belirtilen dst_file yoluna kopyalar.
Sonraki iki biçim, ditto komutunun arşivler oluşturma ve ayıklama yeteneğini yansıtır. Bu arşivler
CPIO biçiminde (Unix içerikleri için tercih edilir) veya PKZip biçiminde (Windows uyumluluğu için)
olabilir. src_archive ve dst_archive tek bir - karakteri olabilir; bu durum ditto komutunun
arşiv verisini sırasıyla stdin'den okumasına veya stdout'a yazmasına neden olur.
ditto, argüman olarak sağlanan sembolik bağları izler; ancak kaynak veya hedef hiyerarşilerinde
gezinirken hiçbir bağı izlemez. ditto, bir kaynaktan kopyalandıklarında hedefteki mevcut dosyaların,
sembolik bağların ve aygıtların üzerine yazar. Sonuçta oluşan dosyalar, bağlar ve aygıtlar,
kopyalandıkları kaynak öğelerle aynı izin moduna (mode), erişim süresine, değişiklik süresine,
sahibine ve grubuna sahip olur.
Borular (pipes), soketler ve adları .nfs veya .afpDeleted ile başlayan dosyalar yoksayılır.
ditto, hedefteki mevcut dizinlerin izin modunu, sahibini, grubunu, genişletilmiş özniteliklerini veya
ACL'lerini değiştirmez. Dosyalar ve sembolik bağlar dizinlerin üzerine yazamaz veya bunun tersi
yapılamaz.
ditto, kopyalama sırasında Universal Mach-O ikililerini (binaries) "seyreltmek" (thin) için
kullanılabilir. Ayrıca bir BOM ("Bill of Materials") dosyasının içeriğine göre dosyaları seçici olarak
kopyalayabilir. ditto, kaynak dizinlerinde bulunan dosya sabit bağlarını (hard links) korur, ancak
dizin sabit bağlarını korumaz. Süper kullanıcı olarak çalıştırıldığında setuid ve setgid modlarını
muhafaza eder.
ditto, --norsrc kullanılarak aksi belirtilmedikçe kopyalama yaparken kaynak çatallarını (resource forks) ve HFS meta-veri bilgilerini korur. --norsrc; kaynak çatallarının, genişletilmiş
özniteliklerin, Erişim Denetim Listelerinin (ACL'ler) ve karantina bitlerinin kopyalanmasını devre
dışı bırakır.
DITTONORSRC, komut satırındaki --norsrc --noextattr --noacl --noqtn seçeneklerinin takma adı
(alias) olarak ortamda (environment) ayarlanabilir. Ancak her bir seçenek ayrı ayrı açılıp
kapatılabilir; daha fazla ayrıntı için Seçenekler bölümüne bakın.
Seçenekler
-h,--help
Tam kullanımı yazdırır.-v
Kopyalanan her kaynak dizini içinstderr'e bir çıktı satırı yazdırır.-V
Kopyalanan her dosya, sembolik bağ ve aygıt içinstderr'e bir çıktı satırı yazdırır.-X
Bir veya daha fazla kaynak dizini kopyalarken, farklı bir aygıt kimliğine (device ID) sahip dizinlerin içine inmez.-c
Hedef yolda bir arşiv oluşturur.-kverilmediği sürece varsayılan biçim CPIO'dur. CPIO arşivleri, adları.cpioile biten dosyalarda saklanmalıdır. Sıkıştırılmış CPIO arşivleri, adları.cpgzile biten dosyalarda saklanmalıdır.-zgzip(1)sıkıştırmasını kullanarak sıkıştırılmış CPIO arşivleri oluşturur.-jbzip2(1)sıkıştırmasını kullanarak sıkıştırılmış CPIO arşivleri oluşturur.-x
Kaynak argümanları olarak verilen arşivleri ayıklar.-kverilmediği sürece biçimin CPIO olduğu varsayılır. Sıkıştırılmış CPIO otomatik olarak işlenir.-k
Varsayılan CPIO yerine bir PKZip arşivinden oluşturur veya ayıklar. PKZip arşivleri, adları.zipile biten dosyalarda saklanmalıdır.--keepParent
Bir arşiv oluştururken, üst dizin adı olansrcdeğerinidst_archiveiçine gömer.--arch arch
Universal ikilileri (binaries) belirtilen mimariye göre seyreltir (thin). Birden fazla--archseçeneği belirtilirse, sonuçta oluşan hedef dosya belirtilen mimarilerin her birini içerir (kaynak dosyada mevcutlarsa).archdeğeriarm64,x86_64vb. olarak belirtilmelidir.--bom bom
Yalnızca belirtilen BOM dosyasında mevcut olan dosyaları, bağları, aygıtları ve dizinleri kopyalar.--rsrc
Kaynak çatallarını (resource forks) ve HFS meta-verilerini korur.ditto, kaynak çatallarını yerel olarak desteklemeyen dosya sistemlerinde bu verileri Carbon uyumlu._AppleDouble dosyalarında saklar. Mac OS X 10.4 sürümünden itibaren--rsrcvarsayılan davranıştır.--norsrc
Kaynak çatallarını ve HFS meta-verilerini korumaz. Hem--norsrchem de--rsrcgeçirilirse, en son geçirilen öncelikli olur. Her iki seçenek deDITTONORSRCdeğişkenini geçersiz kılar. Açıkça belirtilmediği sürece, Mac OS X 10.4 davranışıyla eşleşmesi için--norsrcseçeneği--noextattrve--noaclseçeneklerini de dolaylı olarak etkinleştirir.--extattr
Genişletilmiş öznitelikleri korur.--rsrcgerektirir. Mac OS X 10.5 sürümünden itibaren--extattrvarsayılan davranıştır.--noextattr
Genişletilmiş öznitelikleri korumaz.--norsrcgerektirir.--qtn
Karantina bilgilerini korur. Mac OS X 10.5 sürümünden itibaren--qtnvarsayılan davranıştır.--noqtn
Karantina bilgilerini korumaz.--acl
Erişim Denetim Listelerini (ACL'ler) korur. Mac OS X 10.5 sürümünden itibaren--aclvarsayılan davranıştır.--noacl
ACL'leri korumaz.--nocache
Mac OS X Unified Buffer Cache (Birleşik Ara Bellek Önbelleği) kullanarak kopyalama yapmaz. Okunan ve yazılan dosyalar önbelleğe alınmaz; ancak dosya zaten önbellekte mevcutsa, önbelleğe alınmış bilgiler kullanılır.--hfsCompression
Dosyaları kopyalarken veya bir arşivden içerik ayıklarken, hedef dosya sistemi sıkıştırmasını destekleyen bir HFS+ veya APFS birimi ise uygun olan tüm içerik sıkıştırılır. Bu yalnızca Mac OS X 10.6 veya daha yeni sürümlerde desteklenir ve yalnızca sistem dosyalarını içeren kurulum ve yedekleme senaryolarında kullanılmak üzere tasarlanmıştır.Dosya sistemi sıkıştırması kullanan dosyalar Mac OS X 10.6'dan önceki sürümlerde okunamadığından, bu bayrak sistem dışı dosyalarla veya Mac OS X 10.6'dan önceki bir sürümde kullanılacak kullanıcı tarafından oluşturulmuş diğer içeriklerle çalışırken kullanılmamalıdır.
--nohfsCompression
İçerik zaten dosya sistemi sıkıştırmasıyla sıkıştırılmamışsa, bir arşivden kopyalama veya ayıklama yaparken dosyaları dosya sistemi sıkıştırmasıyla sıkıştırmaz. Bu bayrak yalnızca Mac OS X 10.6 veya daha yeni sürümlerde desteklenir. Varsayılan değer--nohfsCompressiondeğeridir.--preserveHFSCompression
Dosyaları dosya sistemi sıkıştırmasını destekleyen bir HFS+ veya APFS birimine kopyalarkenditto, dosya sistemi sıkıştırması kullanan tüm kaynak dosyaların sıkıştırmasını korur. Bu bayrak yalnızca Mac OS X 10.6 veya daha yeni sürümlerde desteklenir. Varsayılan değer--preserveHFSCompressiondeğeridir.--nopreserveHFSCompression
Zaten dosya sistemi sıkıştırmasıyla sıkıştırılmış olan dosyaları kopyalarken dosya sistemi sıkıştırmasını korumaz. Bu yalnızca Mac OS X 10.6 veya daha yeni sürümlerde desteklenir.--sequesterRsrc
Bir PKZip arşivi oluştururken, kaynak çatallarını ve HFS meta-verilerini__MACOSXalt dizininde korur. PKZip ayıklama işlemi bu kaynakları otomatik olarak bulur.--zlibCompressionLevel num
Bir PKZip arşivi oluştururken kullanılacak sıkıştırma seviyesini ayarlar. Sıkıştırma seviyesi 0 ile 9 arasında ayarlanabilir; burada 0 sıkıştırma olmadığını, 9 ise en iyi (en yavaş) sıkıştırmayı temsil eder. Varsayılan olarakditto,zlibtarafından tanımlanan varsayılan sıkıştırma seviyesini kullanır.--password
Parola ile şifrelenmiş bir ZIP arşivini ayıklarken,dittokomutunun dosya içeriğini ayıklamak üzere kullanılacak bir parola sormasına izin vermek için--passwordbelirtmeniz gerekir. Bu seçenek sağlanmazsa ve parola ile şifrelenmiş bir dosyayla karşılaşılırsadittobir hata iletisi verir.--persistRootless
Değiştirilen bir dosyanınSF_RESTRICTEDbayrağı veyacom.apple.rootlessgenişletilmiş özniteliği ayarlanmışsa, kaynak dosyada aynı bayrak veya öznitelik olmasa bile bunu korur.--nopersistRootless
Değiştirilen dosyalar içinSF_RESTRICTEDbayrağını veyacom.apple.rootlessgenişletilmiş özniteliğini korumaz.--nonAtomicCopies
Mevcut dosyaları değiştirirken atomik (bütünsel) kopyalama gerçekleştirmez. Varsayılan olarakditto, bir kopyalamayı tamamlarken yeni dosyaları atomik olarak eski yerine yerleştirir.--segmentLargeFiles
Dosyaları bir CPIO arşivine kopyalarken, 8 gigabayttan büyük dosyaları birden çok girdiye böler.--keepBinaries
Dosyaları kopyalarken, değiştirilen Mach-O ikilisi için özgün ikiliyi kenara ayırır. Dosya adı, önüne.BC.T_ön eki getirilmiş rastgele bir sayıya dönüştürülür.--keepBinariesList pathdittoikili dosyaları sakladığında, saklanan dosyanın konumunu belirtilen yoldaki dosyaya kaydeder.--keepBinariesPattern regex
Belirtilen düzenli ifadeyle (regular expression) eşleşen her normal dosyayı saklar. Bu dosyanın bir Mach-O ikilisi olması gerekmediğini unutmayın.--lang lang-bseçeneği ile belirtilen bir indeks BOM dosyasıyla dosyaları kopyalarken, kullanıcı indeks BOM'dan filtrelenecek dil değişkenlerini belirtebilir. Varsayılan olarakditto, filtrelenmiş içerikleri temsil eden yeni bir indeks BOM dosyasını/tmp/ditto.XXXXXkonumunda oluşturur. Kullanıcı çıktı BOM dosyasını-obayrağı ile yönlendirebilir.--outBom bom
Çıktı BOM dosyası için açık bir yol belirtir. Bu BOM dosyası yalnızca kullanıcı-oveya-lbayraklarını belirttiğinde oluşturulur.--clone
Kopyalama yaparken normal dosyaları kopyalamak (clone) için girişimde bulunur.--noclone
Dosyaları kopyalamaya çalışmaz.--option key=value
Kopyalayıcıya geçirilecek isteğe bağlı bir anahtar-değer çifti belirtir. Değer bir dize (string), boolean veya tamsayı olabilir. Boolean değerlertrue,false,yesveyanoolarak belirtilebilir.
Örnekler
src_directory içeriğini dst_directory içine kopyalar; dst_directory zaten mevcut değilse oluşturur:
ditto src_directory dst_directory
src_directory içeriğini dir/dst_directory içine kopyalar; dir ve dst_directory zaten mevcut
değilse oluşturur:
ditto src_directory dir/dst_directory
Tüm kaynak dizinlerin içeriklerini dst_directory içine kopyalar; dst_directory zaten mevcut değilse
oluşturur:
ditto src-1 ... src-n dst_directory
universal_file içeriğini thin_file içine kopyalar; yürütülebilir kodu çalışma anında sadece ppc
olacak şekilde seyreltir:
ditto --arch ppc universal_file thin_file
Scripts dizinini, her türlü kaynağı veya meta-veriyi atlayarak rhost makinesine kopyalar:
ditto -c --norsrc Scripts - | ssh rhost ditto -x --norsrc - ./Scripts
archive.cpio CPIO arşivindeki dosyaları listeler:
pax -f archive.cpio
archive.cpgz sıkıştırılmış CPIO arşivindeki dosyaları listeler:
pax -zf archive.cpgz
Finder'ın Sıkıştır (Compress) işlevine benzer şekilde bir PKZip arşivi oluşturur:
ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip
archive.zip PKZip arşivindeki dosyaları listeler:
unzip -l archive.zip
Hatalar
ditto, her şey kopyalandığında 0, aksi takdirde sıfır dışı bir değer döndürür. ditto neredeyse
hiçbir zaman pes etmez; yol boyunca hataları bildirmeyi tercih eder. Hata teşhis (diagnostic)
iletileri standart hataya yazdırılır.
Ortam Değişkenleri
DITTOABORT: Ortam değişkeniDITTOABORTayarlanmışsa,dittoölümcül bir hatayla karşılaştığındaabort(3)çağrısı yapar.DITTONORSRC:DITTONORSRCayarlanmışsa ancak--rsrc,--extattrve--aclbelirtilmemişse,dittobu ek meta-veri türlerini korumaz.DITTOKEEPBINARIESPATTERN: Ortam değişkeniDITTOKEEPBINARIESPATTERNayarlanmışsa,dittobu düzenli ifadeyle eşleşen dosyaları saklar. Bu,--keepBinariesPatternseçeneğinin davranışıyla eşleşir.DITTOKEEPBINARIESDIR: Varsayılan olarakditto, orijinal dosyayı değiştirilen dosyanın yanında saklar.DITTOKEEPBINARIESDIRortam değişkeni ayarlanmışsaditto, saklanan dosyaları belirtilen dizin yoluna taşır. Dosyalar rastgele bir UUID olarak yeniden adlandırılır ve dizin dengeli tutulur.DITTO_TEST_OPTIONS:DITTO_TEST_OPTIONSdeğeri1olarak ayarlanmışsaditto, seçenekler sözlüğünün içeriği de dahil olmak üzere her kaynak ve hedef çifti içinBOMCopierCopyWithOptionsfonksiyonuna geçirilecek parametreleri yazdırır. Ardından herhangi bir kopyalama işlemi gerçekleştirmeden çıkar.
Hatalar (Bugs)
ditto, dizinleri dizinlerin içine cp(1) ile aynı şekilde kopyalamaz. Özellikle:
ditto foo bar
foo içeriğini bar içine kopyalarken:
cp -r foo bar
foo dizininin kendisini bar içine kopyalar. Bu durum bir hata (bug) olmasa da bazıları bunu hata
benzeri bir davranış olarak görebilir. Arşiv dışı kopyalamalar için --keepParent bu sorunu nihayetinde
hafifletecektir.
Ayrıca Bkz.
bom(5), lsbom(8), mkbom(8), cpio(1), zip(1), gzip(1), bzip2(1), tar(1)
Tarihçe
ditto ilk olarak Mac OS X 10.0 ile ortaya çıkmıştır.