Terminali bir sürücüden diğerine dosya kopyalamak için kullandım.
sudo mv -vi /location/to/drive1/ /location/to/drive2/
Ancak bu, bir dizin oluşturduktan sonra birkaç saat içinde ve bir hata olmadan aniden durdu.
Benim kendi çözümüm genellikle, genellikle hangi dosyaların eksik olduğunu bilmeden bir ara kopyadan kurtarmak zorunda olduğum için çoğunlukla zaman alıcı bir karışıklık olan karma ve karşılaştırmanın bir karışımıdır (zsh için çok uzun bir astar olarak yazılmıştır - bu komut dosyası bash'da yazıldığı gibi çalışmaz):
source_directory="/path/to/source_directory/";
target_directory="/path/to/target_directory/";
while read hash_and_file; do {
echo "${hash_and_file}" | read hash file;
echo "${file}" | sed "s/^/${source_directory}/g" | read copy_from;
echo "${copy_from}" | sed "s/${source_directory}/${target_directory}/g" | read copy_to;
mv -v "${copy_from}" "${copy_to}" | tee -a log;
rm -v "${copy_from}" | tee -a log; };
done <<<$(
comm -23 <( find ${source_directory} -type f -exec sha256sum "{}" \; |
sed "s: ${source_directory}: :g" | sort;
) <( find ${target_directory} -type f -exec sha256sum "{}" \; |
sed "s: ${target_directory}: :g" | sort; ) )
Bu, hedef dizini veya kaynak_dizini yolun bir parçasıysa ve yinelenen olarak işaretlendikleri için taşınmamışlarsa dosyaları silebilir. Ayrıca sonunda kaynak dizini değil.
Kesilen mv'den nasıl kurtarılacağı en iyi uygulama var mı?
--delete-during receiver deletes during the transferve ayrıca birçok diğer yararlı alternatifleri: --delete --delete-before --delete-delay --delete-after --delete-excluded. Yani, evet, rsync en iyi alternatif,
mvkomutu tekrarlamak işe yaramıyor? Belki de *orijinal kaynak bir dizinse kaynak yoluna eklenir.
rsync --delete*bir felaket olur ! destŞu anda içinde olmayan şeyleri kaldıracağından src, önceki denemede başarıyla taşınan tüm dosyalar şimdi silinecek! Muhtemelen rsync --remove-source-fileshangisinin iyi bir alternatif olacağını kabul ettiğimi düşünüyordunuz . ( more1 , more2 )
rsync --deleteolacak sadece kaldırmak diğer kaynağının parçası olmayan dosyaları. [Man rsync] () * 'den yabancı dosyaları dest dizinlerinden silin *. Yabancı anlamların ne olduğunu anlama: Senkronize edilmeme. Ve evet, rsync ayrıca kaynak dosyaları doğru bir şekilde iletildikten sonra kaldırmak için bir yol sağlar.
cmp. Bağımlılıkları vewhile readGilles'in bahsettiği konularla aynı sorunları var . Aynı zamanda yavaş ve ayrıntılı. Ancak disk alanı rsync yönteminden daha erken boşalır, çünkü dosyalar çalışırken yeniden kaynaktan yeniden taşınır. Cesurlar için ilham kaynağı olabilir.