Özet
cp [-R [-H | -L | -P]] [-f | -i | -n] [-aclNpSsvXx] source_file target_file
cp [-R [-H | -L | -P]] [-f | -i | -n] [-aclNpSsvXx] source_file ... target_directory
cp [-f | -i | -n] [-aclNPpSsvXx] source_file target_file
cp [-f | -i | -n] [-aclNPpSsvXx] source_file ... target_directory
Açıklama
İlk özet biçiminde cp yardımcı programı, kaynak_dosyanın (source_file) içeriğini hedef_dosyaya (target_file) kopyalar. İkinci özet biçiminde ise adı geçen her bir kaynak_dosyanın içeriği hedef_dizine (target_directory) kopyalanır. Dosyaların kendi adları değiştirilmez. cp bir dosyayı kendi üzerine kopyalama girişimi tespit ederse, kopyalama başarısız olur.
Aşağıdaki seçenekler mevcuttur:
-H: -R seçeneği belirtilmişse, komut satırındaki sembolik bağlantılar (symbolic links) takip edilir. (Ağaç gezintisi sırasında karşılaşılan sembolik bağlantılar takip edilmez.)-L: -R seçeneği belirtilmişse, tüm sembolik bağlantılar takip edilir.-P: Hiçbir sembolik bağlantı takip edilmez. -R seçeneği belirtildiğinde varsayılan davranış budur.-R: kaynak_dosya bir dizini belirtiyorsa, cp bu dizini ve o noktada bağlı olan tüm alt ağacı kopyalar. kaynak_dosya / karakteriyle bitiyorsa, dizinin kendisi yerine dizinin içeriği kopyalanır. Bu seçenek ayrıca sembolik bağlantıların dolaylı yoldan takip edilmesi yerine doğrudan kopyalanmasına ve cp'nin özel dosyaları normal dosyalar olarak kopyalamak yerine özel dosyalar olarak oluşturmasına neden olur. Oluşturulan dizinler, sürecin umask değeri tarafından değiştirilmeden, ilgili kaynak dizinle aynı moda sahip olur.-R modunda, hatalar tespit edilse bile cp kopyalamaya devam edecektir.
cp'nin sabit bağlantılı (hard linked) dosyaları ayrı dosyalar olarak kopyaladığını unutmayın. Sabit bağlantıları korumanız gerekiyorsa, bunun yerine tar(1), cpio(1) veya pax(1) kullanmayı düşünebilirsiniz.
-a: Arşiv modu. -RpP ile aynıdır. Dosyaların yapısını ve özniteliklerini korur ancak dizin yapısını korumaz.-c: clonefile(2) kullanarak dosyaları kopyalar. Kaynak ve hedefin farklı dosya sistemlerinde olması veya hedef dosya sisteminin klonlamayı desteklememesi durumunda cp'nin, kopyalamanın yine de başarılı olmasını sağlamak için bunun yerine copyfile(2) kullanmaya geri döneceğini unutmayın.-f: Mevcut her bir hedef yol adı için, izinlerine bakılmaksızın onay istemeden onu kaldırır ve yeni bir dosya oluşturur. (-f seçeneği, önceki tüm -i veya -n seçeneklerini geçersiz kılar.)Hedef dosyanın bağlantısı (unlink) kopyalamadan önce kesilmez. Dolayısıyla, mevcut tüm erişim hakları korunacaktır.
-i: Mevcut bir dosyanın üzerine yazacak bir dosyayı kopyalamadan önce cp'nin standart hata çıktısına bir onay istemi yazmasına neden olur. Standart girdiden gelen yanıt ‘y’ veya ‘Y’ karakteriyle başlıyorsa, dosya kopyalama işlemi denenir. (-i seçeneği, önceki tüm -f veya -n seçeneklerini geçersiz kılar.)-l: Kopyalamak yerine, bir hiyerarşideki normal dosyalara sabit bağlantılar oluşturur.-N: -p ile kullanıldığında, dosya bayraklarının kopyalanmasını bastırır.-n: Mevcut bir dosyanın üzerine yazmaz. (-n seçeneği, önceki tüm -f or -i seçeneklerini geçersiz kılar.)-p: İzinlerin elverdiği ölçüde, cp'nin her bir kaynak dosyanın şu özniteliklerini kopyada korumasını sağlar: değiştirilme zamanı, erişim zamanı, dosya bayrakları, dosya modu, kullanıcı kimliği (UID) ve grup kimliği (GID). Kaynak çatalları (resource forks) dahil olmak üzere Erişim Kontrol Listeleri (ACL'ler) ve Genişletilmiş Öznitelikler (EA'lar) de korunacaktır.Kullanıcı kimliği ve grup kimliği korunamıyorsa, hiçbir hata mesajı görüntülenmez ve çıkış değeri değiştirilmez.
-S: Seyrek (sparse) dosyalardaki boşlukları (delikleri) korumaya çalışmaz.-s: Kopyalamak yerine, bir hiyerarşideki normal dosyalara sembolik bağlantılar oluşturur.-v: cp'nin ayrıntılı modda çalışmasını sağlayarak dosyaları kopyalandıkça gösterir.-X: Genişletilmiş Öznitelikleri (EA'lar) veya kaynak çatallarını kopyalamaz.-x: Dosya sistemi bağlama noktaları geçilmez.
Her bir mevcut hedef dosyanın içeriği, izinler elverdiği sürece üzerine yazılır. -p seçeneği belirtilmediği sürece modu, kullanıcı kimliği ve grup kimliği değişmez.
İkinci özet biçiminde, kaynak_dosya olarak yalnızca bir tane dizin belirtilip -R bayrağı atanmadığı sürece hedef_dizin (target_directory) mevcut olmalıdır.
Hedef dosya mevcut değilse, dosya modu oluşturma maskesi (umask, bkz. csh(1)) tarafından değiştirildiği şekliyle kaynak dosyanın modu kullanılır. Kaynak dosyanın set-user-ID biti etkinse, hem kaynak dosya hem de hedef dosya aynı kullanıcıya ait olmadığı sürece bu bit kaldırılır. Kaynak dosyanın set-group-ID biti etkinse, hem kaynak dosya hem de hedef dosya aynı grupta yer almadığı ve kullanıcı bu grubun bir üyesi olmadığı sürece bu bit kaldırılır. Hem set-user-ID hem de set-group-ID bitleri ayarlanmışsa, yukarıdaki koşulların tümü karşılanmalıdır, aksi takdirde her iki bit de kaldırılır.
Dosya oluşturma veya üzerine yazma için uygun izinler gereklidir.
Sembolik bağlantılar, -R bayrağı ayarlanmadığı sürece her zaman takip edilir; -R bayrağı ayarlandığında ise varsayılan olarak sembolik bağlantılar takip edilmez. -H veya -L bayrakları (-R bayrağıyla birlikte), sembolik bağlantıların yukarıda açıklandığı gibi takip edilmesini sağlar. -H, -L ve -P seçenekleri, -R seçeneği belirtilmedikçe yoksayılır. Ek olarak, bu seçenekler birbirini geçersiz kılar ve komutun eylemleri belirtilen son seçeneğe göre belirlenir.
cp bir SIGINFO (stty(1) için status bağımsız değişkenine bakın) sinyali alırsa, geçerli girdi ve çıktı dosyası ile tamamlanma yüzdesi standart çıktıya yazılır.
cp kopyalama sırasında bir G/Ç (I/O) hatasıyla karşılaşırsa, kısmen kopyalanmış bir hedef_dosya bırakabilir. cp, kaynağın kurtarılamaz olabileceği durumlarda daha fazla veri kaybını önlemek için özellikle hata durumlarında çıktı dosyasını temizlemekten kaçınır. Hedef_dosya hakkında daha güçlü garantiler gerekiyorsa, install(1) gibi alternatifler tercih edilebilir.
Çıkış Durumu
cp yardımcı programı başarı durumunda 0 ile, bir hata oluşursa >0 ile çıkar.
Örnekler
foo adlı dosyanın bar adında bir kopyasını oluştur:
$ cp foo bar
Bir grup dosyayı /tmp dizinine kopyala:
$ cp *.txt /tmp
junk dizinini ve tüm içeriğini (tüm alt dizinler dahil) /tmp dizinine kopyala:
$ cp -R junk /tmp
Uyumluluk
cp yardımcı programının geçmiş sürümlerinde bir -r seçeneği vardı. Bu uygulama bu seçeneği desteklemektedir, ancak davranışı geçmişteki FreeBSD davranışından farklıdır. Davranış uygulamaya bağlı olduğundan bu seçeneğin kullanılması kesinlikle önerilmez. FreeBSD'de -r, -RL seçeneğinin bir eşanlamlısıdır ve diğer bayraklar tarafından değiştirilmedikçe aynı şekilde çalışır. Geçmişteki -r uygulamaları, bir hiyerarşiyi yeniden oluştururken özel dosyaları normal dosyalar olarak kopyaladıkları için farklılık gösterir.
-a, -c, -l, -N, -n, -S, -s, -v, -X ve -x seçenekleri standart dışıdır ve betiklerde kullanılmaları önerilmez.
Eski Sürüm Açıklaması
Eski sürüm modunda -f seçeneği -i seçeneğini geçersiz kılar. Ayrıca, -f seçeneği altında, hedef dosyanın bağlantısı kopyalamadan önce her zaman kesilir. Böylece, yeni erişim hakları her zaman ayarlanacaktır.
-R modunda, bir hatayla karşılaşılırsa kopyalama işlemi sonlandırılacaktır.
Eski sürüm modu hakkında daha fazla bilgi için compat(5) kılavuzuna bakın.
Ayrıca Bakınız
install(1), mv(1), rcp(1), clonefile(2), copyfile(2), umask(2), fts(3), compat(5), symlink(7)
Standartlar
cp komutunun IEEE Std 1003.2 (“POSIX.2”) uyumlu olması beklenmektedir.
Tarihçe
Bir cp komutu ilk olarak AT&T UNIX Sürüm 1'de yer almıştır.
macOS 26.4 September 2, 2025 macOS 26.4