Obecnie uruchamiam te dwa polecenia, aby utworzyć szybką kopię zapasową katalogu. Czy istnieje sposób na połączenie tych dwóch poleceń w jedno, aby kopiować i zmieniać nazwę nowego katalogu w jednym poleceniu?
#cp -R /tf/Custom_App /tf/Custom_App_backups/
#mv /tf/Custom_App_backups/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
Odpowiedzi:
Powinieneś być w stanie to zrobić
Jeśli jednak katalog docelowy już istnieje, dopisze to ostatnią część ścieżki źródłowej do ścieżki docelowej, tworząc
/tf/Custom_App_backups/Custom_App_2017-12-21/Custom_App
, a następnie skopiując resztę drzewa w tym katalogu.Aby temu zapobiec, użyj
/tf/Custom_App/.
jako źródła. Oczywiście w takim przypadku możeszrm -r /tf/Custom_App_backups/Custom_App_2017-12-21
najpierw chcieć , jeśli nie chcesz, aby starsze pliki leżały tam po kopii.Różnica między
/some/dir
i/some/dir/.
była dyskutowana jakiś czas temu w cp, kiedy zachowuje się dziwnie. (kropka) lub .. (kropka kropka) to katalog źródłowyźródło
.
jako katalogu źródłowego jest użycie-T
flagi, aby nakazaćcp
zastąpienie miejsca docelowego, zamiast tworzenia w nim nowego członka.cp
./tf/Custom_app/.
Sztuką jest tylko to, co potrzebne.cp -a
działa również.cp -a
oczywiście pojawia się również w np. FreeBSD i OpenBSD, ale wciąż nie jest to standardowa funkcja, to znaczy nie określona przez POSIX . (cp -T
wspomniano wcześniej, że wydaje się GNUizmem, nie ma go w POSIX i nie w BSD, o ile widzę.)Alternatywnie możesz to zrobić w następujący sposób:
Umożliwi to wcześniejsze określenie niestandardowej lokalizacji. Zauważ też, że używa przyrostka.
/.
Pozwala to tylko skopiować zawartość i wykluczyć jej folder zawierający - w tym przypadku jest toCustom_app
folder.źródło