Hogyan jeleníthetem meg az átvitel előrehaladását és sebességét a cp fájlok másolásakor?

277

Egyébként van-e alternatív parancssori segédprogram, amely ezt elérheti?

    
készlet Olivier Lalonde 14.12.2010 05:48
forrás

16 válasz

207

Bár acp nem rendelkezik ezzel a funkcióval, használhatja apv parancsot:

pv my_big_file > backup/my_big_file

Megjegyzés: ez a módszer elveszíti a fájl engedélyeit és tulajdonjogát. Az ilyen módon másolt fájlok ugyanolyan jogosultságokkal rendelkeznek, mintha saját maguk készítenék el őket, és azokhoz tartoznak.

Ebben a példában apv alapvetően csak a stdout * fájlt adja ki, amelyet a> operátor használatával átirányít a fájlra. Ezzel párhuzamosan a terminálon elért haladásról szóló információkat nyomtatja ki.

Ez úgy néz ki, mint:

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

Lehet, hogy szüksége van Telepítés pv (vagy írja be asudo apt-get install pv -ot) a rendszereden.

*: A technikai bit

Három fontos adatfolyam van egy unixszerű rendszerben: stdout (standard kimenet), stderr (standard hiba) és stdin (standard bemenet). Minden program mind a három, úgymond. A> átirányítási szolgáltató átirányítja a program kimenetét egy fájlba. Érvek nélkül, ahogy fent látható, a> átirányítja a program szabvány kimenetét egy fájlt. A (z)cp alapvetően nem kedveli, mint

cat source > destination

(aholcat csak olvas egy fájlt, és kinyomtatja a stdout-ra). A (z)pv olyan, mint a macska, de ha máshol átirányítja a kimeneti adatfolyamot, az előrehaladási adatokat a stdout helyett nyomtatja ki.

Tekintse meg aman pv -ot, ha többet szeretne tudni róla.

Egy másik lehetőség, DoR javasolja a ezt a választ az rsync helyett:

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

Ez megőrzi a fájl engedélyeit / tulajdonjogát, miközben haladást mutat.

    
válasz adott Stefano Palazzo 14.12.2010 06:17
forrás
132

Nincs. Lásd itt , hogy miért. Bár többet tesz, mint amire szüksége van, az rsyncnek van egy--progress paramétere. Az -a fenntartja a jogosultságokat, stb., És -h az emberek olvashatóak lesznek.

rsync -ah --progress source destination

A kimenet valami ilyesmit fog megjelenni:

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)
    
válasz adott bartekbrak 15.10.2012 10:06
forrás
84

Ha szeretné megtudni, hogy a fájlok helyesen vannak-e átvitelre, akkor agcp és agcp lehet, mint a cp, de alapértelmezés szerint egy előrehaladási sávot ad meg, hogy láthassa, hogy mit másol. A program wiki-megjegyzései esetén agcp számos hasznos funkcióval rendelkezik, mint a

  
  • átviteli folyamatjelzés
  •   
  • folyamatos másolás hiba esetén (átugrás a következő fájlba)
  •   
  • a statisztika naplózása: a gcp minden tevékenységét naplózza, így tudni tudja, mely fájlok sikeresen másolódtak
  •   
  • a célállományrendszer korlátozásainak kezelésére szolgáló neve (például az inkompatibilis karakterek törlése "*" vagy "?" a FAT-ban)
  •   

Azonban még akkor is, ha az előrehaladási sáv elérte a 100% -ot az eszköz használatakor, várnia kell, amíg a terminál kérése újra megjelenik, mielőtt biztonságosan eltávolítja a médiát, hogy megbizonyosodjon arról, hogy az átviteli folyamat sikeresen befejeződött.

Agcp fájlok másolására szolgál, és olyan beállításokkal rendelkezik, mint a--preserve, így különböző attribútumok és jogosultságok megmaradhatnak, és--recursive, hogy az egész könyvtárak másolhatók legyenek. További információ a lehetőségekről aman gcp beírásával vagy az Ubuntu manpages Online . Egy tutorial is elérhető ezen az oldalon .

Telepítse agcp -ot a

helyekről
sudo apt-get install gcp

( Megjegyzés : az Ubuntu 12.10-ben az új automount pont például:/media/user/usbdisk)

Egy fájlt átmásolhat a médiára a

billentyűvel
gcp /home/mike/file.mp4 /media/usb

és másolja a mappát a médiához

gcp -rv ~/Podcasts /media/Mik2

Minta kimenet agcp -ból a folyamatjelzővel:

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

Természetesen több fájlt vagy mappát is megadhat a lemezre másoláshoz, és sok egyéb lehetőség van aman gcp -ban.

    
válasz adott user76204 15.10.2012 13:09
forrás
54

Rúgást kapok a cURL használatával erre a pontos célra. A man oldal a "FÁJL" protokollt támogatja, ezért csak úgy használja, mint bármely más protokoll URL-ben:

curl -o destination FILE://source

A sebesség, az előrehaladás, a hátralévő idő, stb. - mindezt egy ismerős formátumban.

    
válasz adott mathemagician 02.02.2013 10:00
forrás
22

Bár nem jeleníti meg a sebességet, több fájl átmásolásakor a-v opció acp parancsra megadja az előrehaladást. például.

cp -rv old-directory new-directory
    
válasz adott Ubuntourist 14.12.2010 18:17
forrás
19

A kernel tudja, hogy a legtöbb adat, például a sebesség, és gyakran a százalékos. A modern rendszermagok ezt a / proc fájlrendszeren keresztül teszik közzé.

A

link mutatója használja ezt az információt. A már futó programokhoz csatolhat és rendszeresen frissítéseket adhat:

$ 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)
...
    
válasz adott Jürgen Weigert 25.02.2014 15:34
forrás
11

Bár apv a helyicp feladatokkal foglalkozik, add éspv használata a helyi (cp) és a távoli (scp) feladatokkal is foglalkozhat.

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

Kérjük, hogypath/to/dest.mkv kilépjen a (z)touch path/to/dest.mkv

értékkel

Ez megmutathatja az előrehaladást, de ha szeretné a százalékos információkat,

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

Cserélje ki a100M értéket a forrásfájl valós méretével.

Itt jelenik meg a távoli rész

Bár a (z)scp alig mutathatja az aktuális előrehaladást, a (z)dd a (z)pv kifejezéssel egy darab torta.

ssh onemach@myotherhost dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv
    
válasz adott onemach 05.01.2013 09:08
forrás
11

Van olyan eszköz, amelyetprogress -nak neveznek a tárolókban, amely képes különböző különböző parancsok megtekintésére és a haladásra vonatkozó információk megjelenítésére.

A

paranccsal telepítse
sudo apt-get install progress

Ez az eszköz így használható:

cp bigfile newfile & progress -mp $!

Output:

[11471] cp /media/Backup/Downloads/FILENAME.file 
        29.9% (24.2 MiB / 16 MiB)
    
válasz adott Nathaniel A Malinowski 27.09.2016 00:35
forrás
10

Van egy új, cv nevű eszköz, amely megtalálja a futó parancshoz tartozó leírást, és bemutatja a haladást és a sebességet: link

cv -w

kinyomtatja az összes futó cp, mv stb művelet statisztikáját

    
válasz adott naugtur 13.07.2014 13:33
forrás
6

Mint sokan mondják, a cp nem tartalmazza ezt a funkciót.

Csak azért, hogy dobja a 0,02 dollárt, amit általában triviális másolási helyzetekkel (pl.-R) nem csinálok:

  1. Nézze meg, milyen nagy a fájl, és ne feledje

  2. Indítsa el a másolást

  3. Nyisson meg egy másik terminált

  4. Futtassa awatch ls -lh DIR -ot a könyvtárban, ahol a cél

Ez megtartaná a célfájl méretét, elég minimális szóval.

A kevésbé triviális helyzetek, pl. rekurzív módon másolja a könyvtárakat, akkor awatch du -hs DIR -ot használhatja a DIR méretének összegzéséhez. Azonban du hosszú időt vehet igénybe a számoláshoz és lelassíthatja a másolást, ezért érdemes-n INTERVAL argumentumot használni ahhoz, hogy nézze meg, hogy a kompromisszum elfogadható.

Frissítés: Ha a Wild-kártyákat a watch du-val, pl. watch du -hs backup/*, ne felejtsd el idézni:

watch "du -hs backup/*"

különben a wild-kártyák csak egyszer lesznek kibővítve, ha az elindult , ezért nem nézünk új fájlokat / alkönyvtárakat.

    
válasz adott Alois Mahdal 16.11.2012 14:20
forrás
4

dd status=progress

A GNU Coreutils 8.24+ (Ubuntu 16.04) opció hozzáadva:

dd if=src of=dst status=progress

A terminál egy típusú sort mutat:

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

Lásd még: Hogyan figyelemmel kísérheti a dd-et?

    
forrás
3

Attól függően, hogy mit szeretne, a Midnight Commander (mc) lehet a válasz. Meglepődtem, hogy még nem említik.

Az olyan eszközök, mint apv vagy arsync hasznosak egy hatalmas fájl átvitelének előrehaladásához, de az egész könyvtárak / fák másolásakor amc kiszámolja a méretet, és nagyon jól mutatja az előrehaladást. Plusz a rendszerek többségében is elérhető a dobozból.

    
válasz adott kralyk 30.01.2016 18:33
forrás
2

Használjon parancsfájlt:

#!/bin/sh
cp_p()
{
   strace -q -ewrite cp -- "" "" 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' "") count=0
}

Ez úgy fog kinézni:

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

Forrás

    
válasz adott Jan 01.09.2014 15:45
forrás
2

Ha van rsync 3.1 vagy újabb (rsync --version), akkor másolhat (cp -Rpn), miközben megőrzi az engedélyeket és a tulajdonjogot, újraindítja a könyvtárakat, "nem clobber" , a másolási arány és a (nagyon durva) becsült hátralévő idő:

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

Ne feledje, hogy a sudo csak akkor szükséges, ha olyan könyvtárakkal / fájlokkal foglalkozol, amelyek nem rendelkeznek. Emellett a--no-i-r nélkül a százalék kisebb számra állítható vissza a másolás során. Az rsync későbbi változatai alapértelmezés szerint nem-i-r értékűek lesznek az info = progress2-el, de a 3.1.2-es verzióban nem.

Megállapítottam, hogy a fennmaradó százalék és idő nagymértékben túlbecsült, amikor másolatot készít egy olyan könyvtárba, amely már tartalmazza a fájlokat (például amikor tipikusan cp -n "no clobber" -t használ).

    
válasz adott S Lentz 02.03.2016 23:22
forrás
0

Más programot másolhat. Ugyanakkor elindíthatod asudo iotop -ot és megnézheted a ténylegesen a lemez olvasható / írható sebességét, de előrehaladás nélkül.

    
válasz adott McKelvin 11.01.2018 16:47
forrás
0

Ellenőrizze a progress_bar forráskódját az alábbi git adattárban

link

Próbálja ki az egyedi bash szkriptcsomagot legfelső

Töltsd le a deb fájlt és telepítsd a debian alapú disztribúciót, vagy töltsd le a forrásfájlokat, módosítsd és használj más disztribúciókat

Funkcionális áttekintés

(1) Nyissa meg az alkalmazásokat ---- Firefox ----Számológép ---- Beállítások

(2) Fájlok kezelése ----Keresés ----Hajózik ---- Gyors hozzáférés

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

(3) Telefon kezelése ---- Áthelyezés / másolás a telefonról ---- Áthelyezés / Másolás telefonra ---- Szinkronizálási mappák

(4) USB kezelése ---- Áthelyezés / másolás USB-ből ---- Áthelyezés / Másolás USB-re

    
válasz adott KIRAN B 10.09.2018 16:54
forrás