Jak mogę skopiować katalog i zmienić jego nazwę w tym samym poleceniu?

15

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
AllisonC
źródło
1
cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
jesse_b
Co powiesz na zdefiniowanie aliasu lub funkcji dla tych dwóch rzeczy;)
LinuxSecurityFreak

Odpowiedzi:

21

Powinieneś być w stanie to zrobić

cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21

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żesz rm -r /tf/Custom_App_backups/Custom_App_2017-12-21najpierw chcieć , jeśli nie chcesz, aby starsze pliki leżały tam po kopii.

Różnica między /some/diri /some/dir/.była dyskutowana jakiś czas temu w cp, kiedy zachowuje się dziwnie. (kropka) lub .. (kropka kropka) to katalog źródłowy

ilkkachu
źródło
Alternatywą dla przekazania .jako katalogu źródłowego jest użycie -Tflagi, aby nakazać cpzastąpienie miejsca docelowego, zamiast tworzenia w nim nowego członka.
Toby Speight,
@TobySpeight, ... w GNU cp.
ilkkachu
1
/tf/Custom_app/.Sztuką jest tylko to, co potrzebne.
Martin Bonner wspiera Monikę
cp -adziała również.
flow2k
1
@ flow2k, w szczególności narzędzia GNU mają wiele niestandardowych opcji, z których wiele jest bardzo przydatnych. cp -aoczywiś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 -Twspomniano wcześniej, że wydaje się GNUizmem, nie ma go w POSIX i nie w BSD, o ile widzę.)
ilkkachu
1

Alternatywnie możesz to zrobić w następujący sposób:

mkdir /tf/Custom_App_backups/Custom_App_2017-12-21 # prepare the target location
cp -R /tf/Custom_app/. /tf/Custom_App_backups/Custom_App_2017-12-21 # copy only the contents

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 to Custom_appfolder.

Abel Melquiades Callejo
źródło