Bagaimana saya bisa menyalin direktori dan mengganti namanya dalam perintah yang sama?

15

Saat ini, saya menjalankan dua perintah ini untuk membuat cadangan cepat dari direktori. Apakah ada cara untuk menggabungkan dua perintah menjadi satu, sehingga saya menyalin dan mengganti nama direktori baru dalam satu perintah?

#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
sumber
1
cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
jesse_b
Bagaimana kalau mendefinisikan alias atau fungsi untuk dua hal;)
LinuxSecurityFreak

Jawaban:

21

Anda harus bisa berbuat adil

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

Namun , jika direktori target sudah ada, ini akan menambahkan bagian akhir dari jalur sumber ke jalur tujuan, membuat /tf/Custom_App_backups/Custom_App_2017-12-21/Custom_App, dan kemudian menyalin sisa pohon di dalamnya.

Untuk mencegah hal ini, gunakan /tf/Custom_App/.sebagai sumber. Tentu saja, dalam hal ini Anda mungkin ingin rm -r /tf/Custom_App_backups/Custom_App_2017-12-21terlebih dahulu, jika Anda tidak ingin file lama tergeletak di sana setelah salinan.

Perbedaan antara /some/dirdan /some/dir/.dibahas beberapa waktu lalu di cp berperilaku aneh ketika. (dot) atau .. (dot dot) adalah direktori sumber

ilkkachu
sumber
Alternatif untuk lewat .sebagai direktori sumber adalah dengan menggunakan -Tbendera untuk memberitahu cpuntuk menimpa tujuan daripada membuat anggota baru di dalamnya.
Toby Speight
@TobySpeight, ... di GNU cp.
ilkkachu
1
The /tf/Custom_app/.Caranya adalah apa yang saya butuhkan.
Martin Bonner mendukung Monica
cp -ajuga berfungsi.
flow2k
1
@ flow2k, utilitas GNU khususnya memiliki banyak opsi non-standar, banyak di antaranya sangat berguna. cp -atentu saja muncul juga dalam misalnya FreeBSD dan OpenBSD tetapi itu masih bukan fitur standar, yaitu, tidak ditentukan oleh POSIX . ( cp -Tyang disebutkan sebelumnya kelihatannya GNUisme, tidak dalam POSIX, dan tidak dalam BSD sejauh yang saya bisa lihat.)
ilkkachu
1

Atau, Anda dapat melakukannya seperti ini:

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

Ini akan memungkinkan Anda untuk menentukan lokasi khusus Anda sebelumnya. Juga, perhatikan bahwa ia menggunakan akhiran. /.Ini memungkinkan Anda untuk hanya menyalin konten dan mengecualikan folder yang berisi - dalam hal ini adalah Custom_appfolder.

Abel Melquiades Callejo
sumber