it-swarm-tr.com

Cp ile dosya kopyalarken aktarımın ilerleyişi ve hızı nasıl gösterilir?

Aksi takdirde, bunu başarabilecek alternatif bir komut satırı programı var mı?

326
Olivier Lalonde

cp bu işlevselliğe sahip olmasa da, bunu yapmak için pv kullanabilirsiniz:

pv my_big_file > backup/my_big_file

Not: Bu yöntem, dosyanın izinlerini ve sahipliğini kaybedecektir. Bu şekilde kopyalanan dosyalar, siz kendiniz oluşturmuş ve size ait olacak gibi aynı izinlere sahip olacaktır.

Bu örnekte, pv temel olarak dosyayı yalnızca > operatörünü kullanarak bir dosyaya yönlendirdiğiniz stdout * dosyasına çıkarır. Aynı zamanda, bunu yaptığınızda terminale ilerleme hakkında bilgi basar.

Göründüğü gibi:

[email protected]:~/Data$ pv my_big_file > backup/my_big_file
 138MB 0:00:01 [73.3MB/s] [=================================>] 100% 

Sisteminize pv (alternatif olarak, Sudo apt-get install pv) yazın.


*: Teknik bit

Unix benzeri bir sistemde üç önemli veri akışı vardır: stdout (standart çıktı), stderr (standart hata) ve stdin (standart girdi). Konuşmak için her programın üçü de var. > yönlendirme operatörü program çıkışını bir dosyaya yönlendirir. Argümanlar olmadan, yukarıda gördüğünüz gibi, >, bir programın standart çıkışını bir dosyaya yönlendirir. cp temelde bundan daha sinirli bir şey yapmaz

cat source > destination

(cat yalnızca bir dosyayı okur ve onu stdout'a yazdırır). pv tıpkı kedi gibidir, ancak çıkış akışını başka bir yere yönlendirirseniz, bunun yerine ilerleme bilgisini stdout'a basar.

Bu konuda daha fazla bilgi edinmek için man pv bölümüne bakın.


olarak başka bir seçenekalt textDoR şu anlama gelir: this answer , bunun yerine rsync kullanmaktır:

$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
        621.22M  57%  283.86MB/s    0:00:01

Bu, ilerlemeyi gösterirken dosya izinlerini/sahipliğini koruyacaktır.

249
Stefano Palazzo

Yok. Neden olarak burada bakınız. İhtiyacınızdan daha fazlasını yapsa da, rsync, --progress parametresine sahiptir. -a izinleri vs. koruyacaktır ve -h insan tarafından okunabilir olacaktır.

rsync -ah --progress source destination

Çıktı şöyle görünecek:

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)
183
bartekbrak

Dosyalarınızın doğru aktarılıp aktarılmadığını görmek istiyorsanız, gcp ve gcp komutları cp'ye benzer ancak varsayılan olarak size nelerin kopyalandığını görebilmeniz için bir ilerleme çubuğu verir. Programın wiki notları , gcp gibi birçok yararlı özelliği var.

  • transfer ilerleme göstergesi
  • hata üzerine sürekli kopyalama (bir sonraki dosyaya atla)
  • kopya durumu günlüğü: gcp, hangi dosyaların başarılı bir şekilde kopyalandığını bilmek mümkün tüm eylemlerini kaydeder.
  • hedef dosya sistemi sınırlamalarını işlemek için isim yönetimi (örneğin, FAT üzerindeki "*" veya "?" uyumsuz karakterlerin silinmesi)

Ancak, aracı kullanırken ilerleme çubuğu% 100'e ulaşmış olsa bile, aktarma işleminin başarılı bir şekilde tamamlanmasını sağlamak için ortamınızı güvenli bir şekilde çıkarmadan önce Terminal İstemi'nin yeniden görünmesini beklemelisiniz.

gcp, dosyaları kopyalamak için kullanılır ve --preserve gibi seçeneklere sahiptir, böylece çeşitli nitelik ve izinler korunabilir ve tüm dizinlerin kopyalanabilmesi için --recursive. Seçenekleri hakkında daha fazla bilgiyi man gcp girerek ya da çevrimiçi olarak Ubuntu manpages ile bulabilirsiniz. Bir öğretici de mevcuttur bu sitede .

İle depolarından gcp yükleyin

Sudo apt-get install gcp

( Not : Ubuntu 12.10’da yeni otomatik sayı noktası, örneğin, /media/user/usbdisk)

Bir dosyayı girerek ortamınıza kopyalayabilirsiniz.

gcp /home/mike/file.mp4 /media/usb

ve bir klasörü medyanıza kopyalayın.

gcp -rv ~/Podcasts /media/Mik2

İlerleme çubuğu ile gcp öğesinden örnek çıktı:

gcp ~/Videos_incIplayer/mars.flv /media/Mik2
Copying 168.57 MiB 100% |########################################################|   7.98 M/s Time: 00:00:22

Elbette diskinize kopyalamak için birden fazla dosya veya klasör belirleyebilirsiniz ve man gcp içinde kapsanan birçok seçenek vardır.

88
user76204

Bu amaç için cURL kullanmaya başladım. Man sayfası "FILE" protokolünü desteklenen şekilde listeler, bu yüzden bir 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.

67
mathemagician

Hız göstermiyor olsa da, birden fazla dosya kopyalarken, cp komutuna -v seçeneği size ilerleme bilgisi sağlayacaktır. Örneğin.

cp -rv old-directory new-directory
27
Ubuntourist

Çekirdek, hız ve çoğu zaman yüzde gibi verilerin çoğunu bilir. Modern çekirdekler bunu/proc dosya sistemiyle gösterir.

şuradan gelen hızları https://github.com/jnweiger/showspeed bu bilgiyi kullanır. Zaten çalışan programlara ekleyebilir ve bunun gibi periyodik güncellemeler verebilir:

$ dd if=bigfile of=/tmp/otherbigfile &
$ showspeed dd
dd looks like a process name. pid=4417 matches av0=dd.
p/4417/fd/0r /home/jw/bigfile 113MB/s (12%, 2.3GB)  9m:35
p/4417/fd/1w /tmp/otherbigfile 182MB/s (2.6GB)
p/4417/fd/0r /home/jw/bigfile 285MB/s (15%, 3.0GB)  8m:08
p/4417/fd/0r /home/jw/bigfile 115MB/s (16%, 3.2GB)  8m:01
p/4417/fd/0r /home/jw/bigfile 107MB/s (17%, 3.4GB)  7m:39
p/4417/fd/1w /tmp/otherbigfile 104MB/s (3.5GB)
p/4417/fd/0r /home/jw/bigfile 139MB/s (19%, 3.7GB)  7m:37
p/4417/fd/0r /home/jw/bigfile 116MB/s (20%, 3.9GB)  7m:18
p/4417/fd/1w /tmp/otherbigfile  67MB/s (4.0GB)
p/4417/fd/1w /tmp/otherbigfile 100MB/s (4.1GB)
...
20
Jürgen Weigert

Çeşitli farklı komutları inceleyebilen ve bunlar için ilerleme bilgilerini gösterebilen depolarda progress adlı bir araç var.

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)
15

pv yerel cp görevini yerine getirirken, dd kullanarak pv hem yerel (cp) hem de uzaktan (scp ile başa çıkabilir. görevler.

dd if=path/to/source.mkv | pv | dd of=path/to/dest.mkv

Lütfen path/to/dest.mkv öğesinin _ touch path/to/dest.mkv tarafından çıkıldığından emin olun.

Bu ilerlemeyi gösterebilir, ancak yüzde bilgisini istiyorsanız,

dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv

Kaynak dosyanızın gerçek boyutuyla yukarıda 100M ile değiştirin.

Uzak Bölüm geliyor

scp geçerli ilerlemeyi pek gösteremezken, dd ile pv kullanmak bir parça kekdir.

ssh [email protected] dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv
12
onemach

Çalışan bir komutla ilgili herhangi bir tanımlayıcıyı bulabilen ve ilerleme ve hız gösterebilen yeni bir araç var: https://github.com/Xfennec/cv

cv -w

çalışan tüm cp, mv vb. işlemlerin istatistiklerini verir.

11
naugtur

dd status=progress

Seçenek GNU Coreutils 8.24+ (Ubuntu 16.04) bölümüne eklendi:

_dd if=src of=dst status=progress
_

Terminal bir tür çizgi gösterir:

_462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s
_

Ayrıca bakınız: dd'nin ilerlemesini nasıl izlersiniz?

Birçok kişinin söylediği gibi, cp bu işlevi içermez.

Sadece 0,02 dolarımı atmak için, genellikle önemsiz kopyalama durumlarında yaptığım şeyleri (yani hayır -R):

  1. Dosyanın ne kadar büyük olduğunu görün ve hatırlayın

  2. Kopyalamaya başla

  3. Başka bir terminal aç

  4. Hedefin bulunduğu dizinde watch ls -lh DIR komutunu çalıştırın

Bu beni asgari güçlükle hedef dosya boyutunda güncel tutabilir.

Daha az önemsiz durumlar için bir alternatif olarak; dizinleri tekrar tekrar kopyalarken, DIR boyutunun özetini görmek için watch du -hs DIR kullanabilirsiniz. Bununla birlikte, du'nun hesaplanması uzun zaman alabilir ve kopyalamayı yavaşlatabilir, bu nedenle takas işleminin kabul edilebilir olması için izlemek için -n INTERVAL argümanını kullanmak isteyebilirsiniz.

pdate: Watch du ile kullanılan komutla joker karakter kullanıyorsanız, ör. watch du -hs backup/*, alıntı yapmayı unutma:

watch "du -hs backup/*"

aksi takdirde joker karakterler yalnızca bir kez , saat başladığında böylece du yeni dosyalara/alt dizinlere bakmayacak.

7
Alois Mahdal

Eğer rsync 3.1 veya daha üst sürümlere sahipseniz (rsync --version), izinleri ve mülkiyeti koruyarak kopyalayabilir (cp -Rpn), dizinleri tekrar kilitleyebilir, "clobber yok" yazabilir ve genel ilerlemeyi (sadece dosyaya göre ilerleme yerine) görüntüleyebilir, Kopyalama oranı ve (çok kaba) Tahmini kalan süre:

Sudo rsync -a --info=progress2 --no-i-r /source /destination

Sudo’nun yalnızca sahip olmadığınız dizinler/dosyalar ile ilgileniyorsanız gerekli olduğunu unutmayın. Ayrıca, --no-i-r olmadan yüzde, kopyalama sırasında bir noktada daha düşük bir sayıya sıfırlanabilir. Belki de daha sonra rsync sürümleri, info = progress2 olan no-i-r'ye varsayılan olacaktır, ancak 3.1.2'nin şu anki sürümünde değildir.

Zaten dosya içeren bir dizine kopyalanırken, kalan yüzde ve sürenin büyük ölçüde fazla tahmin edildiğini buldum (yani, cp -n "no clobber" kullanacağınız zamanki gibi).

6
S Lentz

Ne yapmak istediğinize bağlı olarak, Midnight Commander (mc) bunun cevabı olabilir. Henüz söylenmemiş olmasına şaşırdım.

pv veya rsync gibi araçlar, büyük bir dosyanın aktarım ilerlemesini görüntülemek için iyidir, ancak tüm dizinleri/ağaçları kopyalamak söz konusu olduğunda, mc boyutu hesaplar ve sonra ilerlemeyi çok görüntüler. güzelce. Ayrıca, çoğu sistemde kutudan çıktı.

3
kralyk

Bir Shell betiği kullanın:

#!/bin/sh
cp_p()
{
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}

Bu gibi görünecek:

% cp_p /home/echox/foo.dat /home/echox/bar.dat
66% [===============================>                      ]

Kaynak

3
Jan

öznitelikleri korumak için bir seçenek daha olabilir (source, destination içinde oluşturulacak bir klasör ise)

tar -c source | pv -e -t -p -r | tar -C destination  -x

umarım biri için yararlı olabilir. Tahmini transfer süresine sahip olmak için, bu önceden do -s source yapılarak ve onu pv 'a -s <size> parametresi olarak geçirerek elde edilebilir.

1
ciekawy

Aşağıdaki git havuzunda progress_bar kaynak kodunu kontrol edin

https://github.com/Kiran-Bose/supreme

Ayrıca özel bash betiği paketini de deneyin supreme

Deb dosyasını indirin ve debian temelli dağıtımda kurun veya kaynak dosyaları indirin, değiştirin ve diğer dağıtımlar için kullanın

İşlevselliğe genel bakış

(1) Açık Uygulamalar ---- Firefox ---- Hesap Makinesi ---- Ayarlar

(2) Dosyaları Yönet ---- Ara ---- Gezin ---- Hızlı erişim

            |----Select File(s)
            |----Inverse Selection
            |----Make directory
            |----Make file
                                          |----Open
                                          |----Copy
                                          |----Move
                                          |----Delete
                                          |----Rename
                                          |----Send to Device
                                          |----Properties

(3) Telefonu Yönet ---- Taşı/Telefondan kopyala ---- Taşı/Telefona kopyala ---- Klasörleri senkronize et

(4) USB'yi Yönet ---- USB'den Taşı/Kopyala ---- USB'den Kopyala/Taşı

0
KIRAN B

pv, cp veya başka bir şey olsun, bir pid verilen dosya tanımlayıcılarının nasıl izleneceğini bilir

Belgelerden:

   (Linux only): Watching file descriptor 3 opened by another process 1234:

          pv -d 1234:3

   (Linux only): Watching all file descriptors used by process 1234:

          pv -d 1234

Örnek:

md5sum file &
[1] + 1271 suspended
pv -d 1271
417MiB 0:00:17 [12,1MiB/s] [============>                                 ] 29% ETA 0:00:53

$ cp file.mov copy.mov &
[2] 3731
$ pv -d 3731
3:/media/windows/file.mov:  754MiB 0:00:04 [97,2MiB/s] [======================>                       ] 52% ETA 0:00:07
4:/media/windows/copy.mov:  754MiB 0:00:04 [97,3MiB/s] [     <=>                                                                   ] 
0
alecail

Herhangi bir programı kullanarak kopyalayabilirsiniz. Aynı zamanda, Sudo iotop ile başlayabilir ve gerçekte henüz ilerleme kaydetmeden disk okuma/yazma hızını görebilirsiniz.

0
McKelvin