Dlaczego wolne miejsce na partycji źródłowej nie zmienia się podczas „mv”?

13

Pracuję, mvaby przenieść katalog (zawierający wiele plików) z jednej partycji do drugiej. Podczas mvprzenoszenia pojedynczych plików w katalogu jeden po drugim, zauważam, że rozmiar wolnego miejsca na partycji źródłowej nie zmienia się, podczas gdy rozmiar wolnego miejsca na partycji docelowej maleje.

Dlaczego to działa w ten sposób, zamiast sumy wolnego miejsca partycji źródłowej i docelowej pozostają takie same?

Tim
źródło

Odpowiedzi:

16

Zgodnie z definicją POSIX, mv skopiuje plik źródłowy do ścieżki docelowej, a jeśli nic nie pójdzie źle, plik źródłowy zostanie usunięty:

  1. Hierarchia plików zrootowana w pliku_źródłowym zostanie zduplikowana jako hierarchia plików zrootowana w ścieżce docelowej

  2. Hierarchia plików zakorzeniona w pliku_źródłowym zostanie usunięta. Jeśli to z jakiegokolwiek powodu się nie powiedzie, mv napisze komunikat diagnostyczny do standardowego błędu, nic więcej nie robi z bieżącym plikiem_źródłowym i przejdzie do pozostałych plików_źródłowych.

Jeśli poruszasz się w tym samym systemie plików, możesz przenieść pozycję tylko z jednej lokalizacji w systemie plików do innej.

Gwarantuje to, że nie utracisz pliku źródłowego, jeśli podczas przenoszenia wystąpią błędy.

Cuonglm
źródło
16

Jest konserwatywny i nie usuwa plików, dopóki kopiowanie się nie powiedzie. Ułatwia to odzyskanie, jeśli coś pójdzie nie tak.

Hildred
źródło
ale katalog ma wiele plików
Tim
7
@Tim: Nie rozpoczyna się usuwanie plików źródłowych, dopóki wszystkie pliki nie zostaną zduplikowane na woluminie docelowym. Jeśli potrzebujesz, aby pliki były przenoszone pojedynczo, aby nigdy nie było więcej „dodatkowego” miejsca niż w przypadku największego pliku, musisz zbudować pętlę, aby to zrobić.
Warren Young
4
Czy kiedykolwiek zrobiłeś ruch w MS-Windows, a mniej więcej w połowie ruchu coś poszło nie tak. Zarówno źródło, jak i miejsce docelowe są bałaganem, a Ty musisz to naprawić. Jeśli nie jesteś maniakiem wieczerzy, prawdopodobnie po prostu usuwasz oba te elementy i uczysz się, aby nie robić tego ponownie.
ctrl-alt-delor