Aksi halde, bunu başarabilecek alternatif bir komut satırı yardımcı programı var mı?
Karşın cp
bu işlevselliğe sahip değil, kullanabilirsiniz pv
bunu yapmak için:
pv my_big_file > backup/my_big_file
Not: Bu yöntem, dosyanın izinlerini ve sahipliğini kaybeder. Bu şekilde kopyalanan dosyalar, kendiniz oluşturmuşsunuz gibi aynı izinlere sahip olacak ve size ait olacaktır.
Bu örnekte, pv
temel olarak, dosyayı kullanarak bir dosyaya yönlendirdiğiniz stdout * dosyasına çıkarır. >
operatör. Eşzamanlı olarak, bunu yaptığınızda terminale ilerlemeyle ilgili bilgileri yazdırır.
İşte böyle görünüyor.:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file 138MB 0:00:01 [73.3MB/s] [=================================>] 100%
Yapmanız gerekebilir & nbsp; Pv'yi yükle (alternatif olarak şunu yazın sudo apt-get install pv
) sisteminizde.
*: Teknik bit
Unıx benzeri bir sistemde üç önemli veri akışı vardır: stdout (standart çıktı), stderr (standart hata) ve stdın (standart girdi). Her programda tabiri caizse üçü de vardır. Bu >
yeniden yönlendirme işleci program çıktısını bir dosyaya yönlendirir. Yukarıda gördüğünüz gibi argümanlar olmadan, >
bir programı yönlendirir standart çıktı bir dosyaya. cp
temel olarak daha süslü bir şey yapmaz
cat source > destination
(nere cat
sadece bir dosyayı okur ve stdout'a yazdırır). pv
tıpkı cat gibi, ancak çıktı akışını başka bir yere yönlendirirseniz, bunun yerine ilerleme bilgilerini stdout'a yazdırır.
Şuna bir bak man pv
bu konuda daha fazla bilgi edinmek için.
Başka bir seçenek olarak Tarafından içinde önerir bu cevap, bunun yerine rsync kullanmaktır:
$ rsync -ah --progress source-file destination-filesending incremental file listsource-file 621.22M 57% 283.86MB/s 0:00:01
Bu, ilerlemeyi gösterirken dosya izinlerini / sahipliğini koruyacaktır.
Yok işte. burada neden olduğu konusunda. Her ne kadar ihtiyacın olandan fazlasını yapsa da, rsync
sahip olduğu --progress
parametre. Bu -a
izinleri vb. tutacak ve -h
insan tarafından okunabilir olacak.
rsync -ah --progress source destination
Çıktı şöyle bir şeye benzeyecek:
Pictures/1.jpg 2.13M 100% 2.28MB/s 0:00:00 (xfr#5898, to-chk=1/5905)Pictures/2.jpg 1.68M 100% 1.76MB/s 0:00:00 (xfr#5899, to-chk=0/5905)
Dosyalarınızın doğru aktarılıp aktarılmadığını görmek istiyorsanız şunları kullanabilirsiniz gcp
ve gcp
cp gibidir, ancak varsayılan olarak size bir ilerleme çubuğu verir, böylece neyin kopyalandığını görebilirsiniz. Programın wiki notları, gcp
gibi birçok kullanışlı özelliğe sahiptir
- transfer ilerleme göstergesi
- sürekli kopyalama hatası (bir sonraki dosyaya atla)
- kopyalama durumu günlüğü: gcp tüm eylemlerini günlüğe kaydeder, böylece hangi dosyaların başarıyla kopyalandığını bilmek mümkündür
- hedef dosya sistemi sınırlamalarını işlemek için ad karışıklığı (örneğin uyumsuz karakterlerin silinmesi "*" veya "?" yağ üzerinde)
Ancak, aracı kullanırken ilerleme çubuğu% 100'e ulaşmış olsa bile, aktarım işleminin başarıyla tamamlandığından emin olmak için medyanızı güvenli bir şekilde kaldırmadan önce terminal isteminiz yeniden görünene kadar beklemeniz gerekir.
gcp
dosyaları kopyalamak için kullanılır ve aşağıdaki gibi seçeneklere sahiptir --preserve
böylece çeşitli öznitelikler ve izinler korunabilir ve --recursive
böylece tüm dizinler kopyalanabilir. Seçenekleri hakkında daha fazla bilgi girerek bulunabilir man gcp
ya da Ubuntu manpages çevrimiçi. Bir öğretici de mevcuttur bu sitede.
Yüklemek gcp
depolardan
sudo apt-get install gcp
(Not: Ubuntu 12.10'da yeni automount noktası, örneğin, /media/user/usbdisk
)
Bir dosyayı girerek medyanıza kopyalayabilirsiniz
gcp /home/mike/file.mp4 /media/usb
ve bir klasörü medyanıza kopyalayın
gcp -rv ~/Podcasts /media/Mik2
Örnek çıktı gcp
ilerleme çubuğu ile:
gcp ~/Videos_incIplayer/mars.flv /media/Mik2Copying 168.57 MiB 100% |########################################################| 7.98 M/s Time: 00:00:22
Elbette, diskinize kopyalanacak birden fazla dosya veya klasör belirtebilirsiniz ve aşağıda ele alınan birçok seçenek vardır man gcp
.
Bu amaç için cURL kullanmaktan zevk alıyorum. Man sayfası "DOSYA" protokolünü desteklendiği şekilde listeler, bu nedenle url'deki diğer protokoller gibi kullanın:
curl -o destination FILE://source
Hız, ilerleme, kalan süre ve daha fazlası - hepsi tanıdık bir biçimde.
Adında bir araç var progress
çeşitli farklı komutları inceleyebilen ve onlar için ilerleme bilgilerini görüntüleyebilen depolarda.
Komutu kullanarak yükleyin
sudo apt-get install progress
Bu araç şu şekilde kullanılabilir:
cp bigfile newfile & progress -mp $!
Çıktı:
[11471] cp /media/Backup/Downloads/FILENAME.file 29.9% (24.2 MiB / 16 MiB)
Hızı göstermese de, birden çok dosyayı kopyalarken, -v
seçeneği için cp
komut size ilerleme bilgisi sağlayacaktır. örneğin
cp -rv old-directory new-directory
Çekirdek, hız ve genellikle yüzde gibi verilerin çoğunu bilir. Modern çekirdekler bunu / proc dosya sistemi aracılığıyla ortaya çıkarır.
hızı göster https://github.com/jnweiger/showspeed bu bilgiyi kullanır. Zaten çalışan programlara bağlanabilir ve bunun gibi periyodik güncellemeler verebilir:
$ dd if=bigfile of=/tmp/otherbigfile &$ showspeed dddd looks like a process name. pid=4417 matches av0=dd.p/4417/fd/0r /home/jw/bigfile 113MB/s (12%, 2.3GB) 9m:35p/4417/fd/1w /tmp/otherbigfile 182MB/s (2.6GB)p/4417/fd/0r /home/jw/bigfile 285MB/s (15%, 3.0GB) 8m:08p/4417/fd/0r /home/jw/bigfile 115MB/s (16%, 3.2GB) 8m:01p/4417/fd/0r /home/jw/bigfile 107MB/s (17%, 3.4GB) 7m:39p/4417/fd/1w /tmp/otherbigfile 104MB/s (3.5GB)p/4417/fd/0r /home/jw/bigfile 139MB/s (19%, 3.7GB) 7m:37p/4417/fd/0r /home/jw/bigfile 116MB/s (20%, 3.9GB) 7m:18p/4417/fd/1w /tmp/otherbigfile 67MB/s (4.0GB)p/4417/fd/1w /tmp/otherbigfile 100MB/s (4.1GB)...
Karşın pv
yerel ile başa çıkabilir cp
görevler, kullanma dd
ile pv
her iki yerel ile de başa çıkabilir (cp
) ve uzaktan (scp
) görevler.
dd if=path/to/source.mkv | pv | dd of=path/to/dest.mkv
Lütfen emin olun path/to/dest.mkv
çıkışlar touch path/to/dest.mkv
Bu, ilerlemeyi gösterebilir, ancak yüzde bilgilerini istiyorsanız,
dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv
Yerini almak 100M
kaynak dosyanızın gerçek boyutu ile yukarıda.
İşte Uzak Kısım Geliyor
Karşın scp
kullanarak mevcut ilerlemeyi zorlukla gösterebilir dd
ile pv
çocuk oyuncağı.
ssh onemach@myotherhost dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv
Rsync 3.1 veya daha yüksek bir sürümünüz varsa (rsync --version
), izinleri ve mülkiyeti korurken (cp -Rpn) kopyalayabilir, dizinleri tekrarlayabilir, "tıkanıklık yok" ve genel ilerlemeyi (yalnızca dosyaya göre ilerleme yerine), kopyalama hızını ve (çok kaba) tahmini süreyi görüntüleyebilirsiniz.:
sudo rsync -a --info=progress2 --no-i-r /source /destination
Sudo'nun yalnızca sahip olmadığınız dizinlerle / dosyalarla uğraşırken gerekli olduğunu unutmayın. Ayrıca, olmadan --no-i-r
yüzde, kopyalama sırasında bir noktada daha düşük bir sayıya sıfırlanabilir. Belki de rsync'in sonraki sürümleri varsayılan olarak ınfo=progress2 ile no-i-r olur, ancak 3.1.2'nin geçerli sürümünde olmaz.
Zaten dosyaları içeren bir dizine kopyalarken kalan yüzde ve sürenin büyük ölçüde fazla tahmin edildiğini buldum (örn. genellikle cp -n "no clobber" kullanacağınız zaman olduğu gibi).
Çalışan bir komutla ilgili herhangi bir tanımlayıcıyı bulabilen ve ilerlemeyi ve hızı gösterebilen cv adlı yeni bir araç var:https://github.com/Xfennec/cv
cv -w
çalışan tüm cp, mv vb. İstatistiklerini çıkarır. operasyonlar
Cp' komutunu zaten başlattıysanız ve şimdi durdurmak istemiyorsanız, hedefin boyutunun bu şekilde büyümesini
izleyebilirsiniz`: command line - How to show the transfer progress and speed when copying files with cp? - Ask Ubuntu ('izle 'du -hs"), gerçekten büyüdüğünü ve kopyanın çalıştığını bilmek.