Başarısız denemeden sonra kalan dosyaları nasıl cp


23

Büyük bir dizini bir sürücüden diğerine kopyalamaya çalışıyorum. Tamamlanmadan önce yanlışlıkla çıkış yaptım, bu yüzden dosyaların sadece% 80'i kopyalandı. Kalan dosyaları sıfırdan başlamadan kopyalamak için uzakta var mı?

Yanıtlar:


35

Denerdim

rsync -a /from/file /dest/file

--append, gibi diğer seçenekleri kullanabilirsiniz -P (--partial --progress). Daha fazla bilgi için man rsync'e bakınız .

Veya kullanıyorsanız cpkullanın cp -u.

from man cp:

-u, --update
     copy only when the SOURCE file is newer than the destination file or when the destination file is missing.

1
Bunu Rahul cus'a vermek zorunda kalacağım, sadece seni dövdü, ama sağol ve herkes canlandırıyor!
barro32

3
İlk kopya aniden sona erdiyse, dosyalardan biri yalnızca kısmen kopyalanabilir ve cp -uumursamayabilir, çünkü yalnızca zaman damgalarını kontrol eder, boyutunu touchdeğil . (Ya da sadece kullanın rsync.)
ilkkachu

@ ilkkachu bu doğru. Yakında güncelleyeceğim.
Rahul

Cp hiç bir zaman sadece kısmen transfer edilmiş tek bir dosya bıraktı mı? Olursa, o zaman -u sizi kısmen çalışan bir dizine bırakacak gibi görünüyor.
Trevor

15

Kısmi dosya transferleri cpiçin ihtiyacınız olan şey olmayabilir.

Bunun rsyncyerine kullanmanızı öneririm . Aktarım başarısız olsa bile, komutu daha sonra yeniden çalıştırabilirsiniz ve yalnızca eksik dosyaları kopyalar.

Örnek:

$ rsync -aPEmivvz from/ to/

(kopyalar from/içine to/dizine)

Yana rsyncdosyaları senkronize ve her aktarımdan sonra kontrol sağlanması gelmez doğru önemsiz kopyalandı.

Swich seti -aPEmivvzbenim standarttır go- seçimi, vb eklenti cihazlar gibi SD-Kartlar dahil ağlar veya harici diskler üzerinde dosya kopyalama zaman

Neredeyse her zaman kullandığım anahtarlar:

-a: "arşiv", şunları içerir -rlptgo(özyinelemeli, sembolik olarak sembolik bağlantılar, izinler, zamanlar, grup, sahip)

-P: "kısmi ilerleme", her dosya için iyi bir ilerleme çubuğu gösteriyor

-E: "çalıştırılabilirlik" çalıştırılabilir olup olmadığını korur

-m: "noempty" boş direkleri erik

-i: "özet" tüm güncellemeler için değişiklik özetini yazdır

-vv: "daha ayrıntılı"

-z: "sıkıştırma"


6

Muhtemelen istediğin şey cpbu davada değil rsync.

Sadece bir dizin yapısını tekrar tekrar yeni bir yere kopyalamak:

rsync -av /path/to/source /path/to/destination 

4

Bunun cpiçin kullanmamalısın . Diğerlerinin de belirttiği gibi, bu iş için doğru araç değil. Doğru araç hedeflerinize bağlı olacak.

Sadece düz bir kopya istiyorsanız:

rsync /source /destinationbayrakların bazı seviyesi ile. Gerçekten iyi örnekler için diğer cevaplara bakınız.

İki yönlü güncellemeler yapmak istiyorsanız

unisongitmenin yolu bu. Rsync, iki yönlü senkronizasyonlarla çakışma çözümünde çok iyi sonuç vermez. Özel olarak siler. Yani iki yönlü kopyaların yanmasını istiyorsun.unison

Yedeklemeler istiyorsanız ve dosyalar metin tabanlıysa, kullanmayı deneyebilirsiniz git. Git yerel olarak çalıştırılabilir, bir "sunucuya" gerek yoktur. Aslında, git sunucuları sadece dosya paylaşım yöntemleridir. Tamamen yedekleme sürücüsünde bir git repo'nuz olabilir ve "itebilirsiniz". Yine bu sadece dosyalar metin tabanlıysa ve tek yönlü bir yedekleme almaya çalışıyorsanız, gerçekten işe yarar.

Yine bir yedekleme için gidiyorsanız (ve sadece bir kez değil), o zaman deja-dupe, BackIntime veya benzeri seçeneklere bakın. Verilerin anlık görüntülerini belirli bir zamanda alırlar. Hepsi kaputun altında çalışıyor.


4

Ayrıca tüm dosyaları tekrar kopyalayabilir, her üzerine yazmak için onay isteyebilir, ardından soruya otomatik olarak hayır cevabını verebilirsiniz:

yes n | cp -i /source /dest

(Muhtemelen daha fazla seçenek kullandınız -r, bu yüzden, sadece onları ekleyin cp -pri /source /dest...)


3

Komutu rsyncaşağıdaki seçeneklerle kullanın :

rsync --progress --partial --append /source_file /destination_file
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.