W przeciwnym razie, czy istnieje jakieś alternatywne narzędzie wiersza poleceń, które może to osiągnąć?
źródło
W przeciwnym razie, czy istnieje jakieś alternatywne narzędzie wiersza poleceń, które może to osiągnąć?
Chociaż cp
nie ma tej funkcji, możesz pv
to zrobić:
pv my_big_file > backup/my_big_file
Uwaga: ta metoda spowoduje utratę uprawnień i własności pliku. Pliki skopiowane w ten sposób będą miały takie same uprawnienia, jak gdybyś je utworzył i będą należeć do Ciebie.
W tym przykładzie pv
po prostu wyprowadza plik na standardowe wyjście *, które przekierowujesz do pliku za pomocą >
operatora. Jednocześnie, kiedy to robisz, drukuje informacje o postępie na terminalu.
Tak to wygląda:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
Może być konieczne zainstalowanie pv (alternatywnie wpisz sudo apt-get install pv
) w systemie.
*: Bit techniczny
Istnieją trzy ważne strumienie danych w systemie uniksopodobnym: stdout (standardowe wyjście), stderr (standardowy błąd) i stdin (standardowe wejście). Każdy program ma wszystkie trzy, że tak powiem. >
Operatorem przekierowania przekierowania wyjście programu do pliku. Bez argumentów, jak widać powyżej, >
przekierowuje standardowe wyjście programu do pliku. cp
w zasadzie nie robi nic bardziej wyszukanego niż
cat source > destination
(gdzie cat
po prostu odczytuje plik i drukuje go na standardowe wyjście). pv
jest jak cat, ale jeśli przekierujesz jego strumień wyjściowy w inne miejsce, zamiast tego wypisze informacje o postępie na standardowe wyjście.
Spójrz na, man pv
aby dowiedzieć się więcej na ten temat.
Inną opcją, jak sugeruje DoR w tej odpowiedzi , jest użycie rsync zamiast:
$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
621.22M 57% 283.86MB/s 0:00:01
Pozwoli to zachować uprawnienia do plików / prawa własności podczas wyświetlania postępu.
pv
nie obsługuje uprawnień w taki sam sposób jakcp
... (w oparciu o jeden szybki test, który próbowałem:pv
nie kopiowałem bitów wykonawczych przez ...rsync
zrobiłem.alias cp="rsync -avz"
cp jest nieaktualny.pv
, możesz zajrzeć do niego/proc/PID of cp/fd
i/proc/PID of cp/fdinfo
dowiedzieć się o postępach. (Do ciebie należy ustalenie prędkości.) Używam tej techniki do oglądaniaupdatedb
.-z
prawdopodobnie powinien być używany tylko do kopii sieciowych; kompresowanie i dekompresowanie danych dla lokalnej kopii jest czystym narzutem.rsync
pamiętaj, aby nie dodawać końcowego/
do ścieżki źródłowej (lub usuń, jeśli np. Zakończenie bash umieści go tam automatycznie). W przeciwnym razie otrzymasz wyniki inne niż podczas używaniacp
(lubgcp
).Nie ma Zobacz tutaj, dlaczego. Chociaż robi więcej, niż potrzebujesz,
rsync
ma--progress
parametr.-a
Zachowa uprawnienia, itp, i-h
będzie czytelny dla człowieka.Dane wyjściowe będą wyglądać mniej więcej tak:
źródło
-r
flagę do ponownego wyświetlania katalogów. Może być nawet aliasowany jako bezpośredni zamiennik cp:alias cp="rsync -ah --progress"
--progress
powoduje, że moja głowa obraca się 🙃, obserwując cały wyświetlacz wyjściowy w terminalu. Więc ci, którzy przychodzą tutaj z wyszukiwań słów kluczowych AOL,rsync -ah --info=progress2 [source] [destination]
przedstawiają wyniki w nieco bardziej rozsądny sposób IMHO.Jeśli chcesz sprawdzić, czy pliki są przesyłane poprawnie, możesz użyć
gcp
igcp
przypomina cp, ale domyślnie wyświetla pasek postępu, dzięki czemu możesz zobaczyć, co jest kopiowane. Jak zauważa strona wiki programu ,gcp
ma kilka przydatnych funkcji, takich jakJednak nawet gdy pasek postępu osiągnie 100% podczas korzystania z narzędzia, musisz poczekać, aż pojawi się ponownie monit terminala, zanim bezpiecznie usuniesz nośnik, aby mieć pewność, że proces przesyłania zakończy się pomyślnie.
gcp
służy do kopiowania plików i ma takie opcje,--preserve
że można zachować różne atrybuty i uprawnienia oraz--recursive
skopiować całe katalogi. Więcej informacji na temat jego opcji można znaleźć, wchodzącman gcp
lub przechodząc do stron internetowych Ubuntu online . Samouczek jest również dostępny na tej stronie .Zainstaluj
gcp
z repozytoriów za pomocą( Uwaga : w Ubuntu 12.10 nowym punktem automount jest na przykład
/media/user/usbdisk
)Możesz skopiować plik na swój nośnik, wprowadzając
i skopiuj folder na swoje media za pomocą
Przykładowe dane wyjściowe z
gcp
paska postępu:Możesz oczywiście określić wiele plików lub folderów do skopiowania na dysk, a także wiele innych opcji
man gcp
.źródło
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
export DISPLAY=:0.0
przed uruchomieniem gcp. Jeśli maszyna jest bezgłowa, musiałbyś rozpocząć xsession w wirtualnym buforze ramek lub coś takiego, w tym momencie prawdopodobnie powinieneś po prostu poszukać innego programugcp
jest całkiem przyzwoity, ale wymaganie DBUS / X jest dziwne. Poradziłem sobie z tym za pośrednictwem SSH, używając przekazywania dalej ssh:ssh -X user@host
i to pozwoliło mi go uruchomić.Mam problem z użyciem cURL do tego właśnie celu. Strona podręcznika zawiera listę obsługiwanych protokołów „PLIK”, więc po prostu używaj go jak każdego innego protokołu w adresie URL:
Szybkość, postęp, pozostały czas i więcej - wszystko w znanym formacie.
źródło
pv
, że nie uratuje uprawnienia.Chociaż nie wyświetla prędkości, podczas kopiowania wielu plików,
-v
opcja docp
polecenia zapewni informacje o postępie. na przykładźródło
Jądro zna większość danych, takich jak prędkość, a często także procent. Nowoczesne jądra udostępniają to poprzez swój system plików / proc.
showspeed z https://github.com/jnweiger/showspeed korzysta z tych informacji. Może łączyć się z już działającymi programami i okresowo aktualizować:
źródło
pkill -USR1 dd
abydd
pokazać jego status, inną opcją byłobywatch -n 1 pkill -USR1 dd
okresowe pokazywanie postępu (co sekundę).W
progress
repozytoriach istnieje narzędzie wywoływane, które może badać różne polecenia i wyświetlać dla nich informacje o postępach.Zainstaluj go za pomocą polecenia
Tego narzędzia można użyć w następujący sposób:
Wynik:
źródło
Chociaż
pv
może poradzić sobie zcp
zadaniami lokalnymi , używaniedd
zpv
może poradzić sobie zarówno z zadaniami lokalnymi (cp
), jak i zdalnymi (scp
).Upewnij się, że
path/to/dest.mkv
wyjścia dotouch path/to/dest.mkv
Może to pokazywać postęp, ale jeśli chcesz uzyskać informacje procentowe,
Zamień
100M
powyżej na rzeczywisty rozmiar pliku źródłowego.Nadchodzi część zdalna
Podczas gdy
scp
ledwo widać aktualny postęp, używaniedd
withpv
to bułka z masłem.źródło
dd
mastatus=progress
: askubuntu.com/a/824895/52975Istnieje nowe narzędzie o nazwie cv, które może znaleźć dowolny deskryptor związany z uruchomionym poleceniem i pokazać postęp i prędkość: https://github.com/Xfennec/cv
wyświetla statystyki wszystkich uruchomionych operacji cp, mv itp
źródło
watch cv -q
jest jeszczecp
katalog rekurencyjnie kopiuje, czy nie.Jak wielu powiedziało, CP nie zawiera tej funkcjonalności.
Żeby rzucić 0,02 $, co zwykle robię z trywialnymi sytuacjami kopiowania (tj. Nie
-R
):Zobacz, jak duży jest ten plik i pamiętaj
Rozpocznij kopiowanie
Otwórz inny terminal
Uruchom
watch ls -lh DIR
katalog, w którym znajduje się celDzięki temu mogę informować mnie na bieżąco o rozmiarze pliku docelowego, bez większych problemów.
Jako alternatywę dla mniej trywialnych sytuacji, np. Rekurencyjnego kopiowania katalogów, możesz użyć,
watch du -hs DIR
aby zobaczyć podsumowanie rozmiaru DIR. Jednak du może długo obliczać, a nawet spowalniać kopiowanie, więc możesz użyć-n INTERVAL
argumentu do oglądania, aby kompromis był akceptowalny.Aktualizacja: Jeśli używasz symboli wieloznacznych z poleceniem używanym z watch du, np.
watch du -hs backup/*
Nie zapomnij zacytować:w przeciwnym razie symbole wieloznaczne zostaną rozwinięte tylko raz , gdy zegarek zostanie uruchomiony, więc du nie będzie patrzeć na nowe pliki / podkatalogi.
źródło
dd status=progress
Dodano opcję w GNU Coreutils 8.24+ (Ubuntu 16.04):
Terminal pokazuje linię typu:
Zobacz także: Jak monitorujesz postęp dd?
źródło
Jeśli masz rsync w wersji 3.1 lub nowszej (
rsync --version
), możesz kopiować (cp -Rpn), zachowując uprawnienia i własność, rekurencyjne katalogi, „bez blokowania” i wyświetlać ogólny postęp (zamiast po prostu postęp po pliku), szybkość kopiowania i ( bardzo szorstki) szacowany czas pozostały przy:Pamiętaj, że sudo jest potrzebne tylko w przypadku katalogów / plików, których nie posiadasz. Poza
--no-i-r
tym wartość procentowa może zostać zresetowana do niższej liczby w pewnym momencie podczas kopiowania. Być może późniejsze wersje rsync będą domyślnie ustawione na no-ir z info = progress2, ale nie ma go w obecnej wersji 3.1.2.Przekonałem się, że procent i pozostały czas są rażąco zawyżone podczas kopiowania do katalogu, który już zawiera pliki (np. Kiedy zwykle użyjesz cp -n „no clobber”).
źródło
Użyj skryptu powłoki:
Będzie to wyglądać następująco:
Źródło
źródło
W zależności od tego, co chcesz zrobić, Midnight Commander (
mc
) może być odpowiedzią. Dziwię się, że jeszcze nie wspomniano.Narzędzia takie jak
pv
lubrsync
są dobre do wyświetlania postępu transferu jednego dużego pliku, ale jeśli chodzi o kopiowanie całych katalogów / drzew,mc
oblicza rozmiar, a następnie bardzo ładnie wyświetla postęp. Ponadto jest dostępny od razu po wyjęciu z pudełka na większości systemów.źródło
może być jeszcze jedna opcja zachowania atrybutów (jeśli
source
jest to folder, w którym zostanie utworzonydestination
)mam nadzieję, że może się komuś przydać. Aby oszacować czas transferu, można to zrobić
do -s source
z wyprzedzeniem i przekazując go jako-s <size>
parametr dopv
.źródło
-f -
jest zbędny.tar
Domyślne wyjściec
i wejście dlax
to stdout i stdin.Możesz skopiować za pomocą dowolnego programu. Jednocześnie możesz rozpocząć
sudo iotop
i zobaczyć rzeczywistą prędkość odczytu / zapisu dysku, ale bez postępu.źródło
Sprawdź kod źródłowy paska postępu w poniższym repozytorium git
https://github.com/Kiran-Bose/supreme
Wypróbuj również niestandardowy pakiet skryptu bash najwyższy
Pobierz plik deb i zainstaluj w dystrybucji opartej na Debianie lub pobierz pliki źródłowe, zmodyfikuj i użyj dla innych dystrybucji
Przegląd funkcjonalności
(1) Otwórz aplikacje ---- Firefox ---- Kalkulator ---- Ustawienia
(2) Zarządzaj plikami ---- Wyszukaj ---- Nawiguj ---- Szybki dostęp
(3) Zarządzaj telefonem ---- Przenieś / Kopiuj z telefonu ---- Przenieś / Kopiuj do telefonu ---- Synchronizuj foldery
(4) Zarządzaj USB ---- Przenieś / Kopiuj z USB ---- Przenieś / Kopiuj na USB
źródło
pv wie, jak oglądać deskryptory plików z danym pidem, niezależnie od tego, czy jest to cp, czy coś innego
Z dokumentacji:
Przykład:
źródło