Bagaimana saya bisa menyalin isi folder ke folder lain di direktori yang berbeda menggunakan terminal?

740

Saya mencoba menyalin isi folder ke folder lain di direktori yang berbeda menggunakan terminal.

Apakah seseorang dapat memberi saya contoh sintaks baris perintah yang diperlukan untuk mencapai ini?

pandisvezia
sumber

Jawaban:

1116

Anda dapat menyalin konten folder /sourceke folder lain yang ada /destdengan perintah

cp -a /source/. /dest/

The -apilihan adalah pilihan rekursif ditingkatkan, yang melestarikan semua atribut file, dan juga melestarikan symlink.

Di .akhir jalur sumber adalah cpsintaksis khusus yang memungkinkan untuk menyalin semua file dan folder, termasuk yang tersembunyi.

enzotib
sumber
@enzotib Saya mencoba menggunakan perintah ini untuk menyalin isi "Downloads / textext" ke "~ / .config / inkscape / extensions /." Dengan menggunakan perintah Anda, saya mengetik "cp -a / Downloads / textext /. /~/.config/inkscape/extensions/." tapi ini tidak berhasil
Funzies
@Funzies: mungkin perintah Anda seharusnya:cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/
enzotib
Tambahkan -pbendera sebagai untuk mempertahankan izin file dan cap waktu. cp -ap /var/www/original.com/images/. /var/www/new.com/images/
Dylan Valade
3
@DylanValade: -asudah tersirat --preserve=all, itu lebih luas dari -p = --preserve=mode,ownership,timestamps.
enzotib
1
@ BennyNeugebauer: scpdigunakan untuk menyalin melalui jaringan (melalui ssh) dan hanya mengenkripsi saluran komunikasi, bukan file pada sistem file tujuan.
enzotib
129

Alternatif adalah rsync

rsync -r source/ destination

Keuntungan dari rsync adalah:

  1. Setelah sinkronisasi awal, itu hanya akan menyalin file yang telah berubah.

  2. Anda dapat menggunakannya melalui jaringan, nyaman untuk file dalam $ HOME, terutama file konfigurasi.

Harimau kumbang
sumber
5
Saya pikir Anda tidak perlu tanda bintang. rsync -r source/ destinationharus cukup, bukan?
Joschua
1
Yang ini lebih tepat: 'rsync -rtvp source / * destination'
shridutt kothari
-r tidak berfungsi untuk file / folder tersembunyi
Nam G VU
1
Ini tidak akan menyalin file yang disembunyikan, karena bash mengembang * hanya ke file yang tidak disembunyikan. Solusi oleh @Joschua lebih aman.
sauerburger
rsync akan menyalin seluruh direktori, termasuk file yang tersembunyi, jika Anda menggunakan trailing / tanpa * jadi rync source/ destjelas orang akan perlu menyesuaikan perintah rsync agar berfungsi sesuai keinginan.
Panther
78

Katakanlah Anda memiliki folder bernama folder1 di Anda ~, di dalam folder1 adalah 1 file bernama file1 dan 2 folder disebut Sub1 dan Sub2 masing-masing dengan file lainnya dan folder di dalamnya.

Untuk menyalin semua isi ~/folder1untuk ~/new_folder1Anda akan menggunakan

cp -r ~/folder1/. ~/new_folder1

new_folder1kemudian akan berisi semua file dan folder dari folder1.

cpadalah perintah untuk menyalin menggunakan terminal, -rmembuatnya secara rekursif (jadi, direktori saat ini + direktori lebih lanjut di dalam saat ini) ~/folder1adalah folder asal, ~/new_folder1adalah folder tujuan untuk file / folder di dalam asal.

Bruno Pereira
sumber
5
tidak menangkap file tersembunyi
Portablejim
1
Bruno terima kasih! Itu membantu saya untuk memahami sintaks, meskipun saya harus mengubahnya sedikit (menghapus tanda ~). Mungkin karena folder tujuan berada di / opt, yang berada di sistem file lain. Dan terima kasih Portablejim untuk mengingat file tersembunyi!
pandisvezia
4
Periode trailing penting. Tanpa itu, kadang-kadang dapat membuat subdirektori baru ~/new_folder1/folder1alih-alih menyalin konten.
wisbucky
1
Mengapa tidakcp -r ~/folder1/* ~/new_folder1
Alex78191
@ Alex78191[root@ home]# mkdir food [root@ home]# cd food/ [root@ food]# mkdir .fruit [root@ food]# mkdir veggies [root@ food]# touch veggies/carrots [root@ food]# touch .fruit/apple [root@ food]# ls * carrots [root@ food]#
Bruno Pereira
14

Periksa http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ ini untuk informasi lebih lanjut tentang menyalin folder. Semoga ini membantu.

cp Command

cpadalah perintah Linux untuk menyalin file dan direktori. Sintaksnya adalah sebagai berikut:

cp source destination
cp dir1 dir2
cp -option  source destination
cp -option1 -option2  source destination

Dalam contoh ini salin /home/vivek/lettersfolder dan semua file-nya ke /usb/backupdirektori:

cp -avr /home/vivek/letters /usb/backup

Dimana,

-a : Pertahankan atribut yang ditentukan seperti direktori mode file, kepemilikan, cap waktu, jika mungkin, atribut tambahan: konteks, tautan, xattr, semua.

-v : Jelaskan apa yang sedang dilakukan.

-r: Salin direktori secara rekursif. Contoh

Salin folder bernama / tmp / conf ke / tmp / backup:

$ cp -avr /tmp/conf/ /tmp/backup
Dilip Rajkumar
sumber
3
Ini bukan pertanyaan yang diajukan.
AStopher
(Menggunakan -r dengan -a adalah redundan; pada gnu cp -a sama dengan "-dr --preserve = all")
cristoper
1
cp: opsi -R dan -r mungkin tidak ditentukan bersama.
IgorGanapolsky
4

Contoh sederhana.

Salin direktori dir_1 dan isinya (_files_) ke direktori dir_2 :

cp -r ./dir_1 ./dir_2
# or
cp -r ./dir_1/ ./dir_2/
# Results in: ./dir_2/dir_1/_files_

Salin konten (_files_) hanya dari dir_1 ke direktori dir_2 :

cp -r ./dir_1/. ./dir_2
# or
cp -r ./dir_1/. ./dir_2/
# Results in: ./dir_2/_files_*

_files_ adalah pengganti untuk file aktual yang terletak di direktori.

Karl Morrison
sumber
2

Jika ada dua folder: (dengan izin menulis)

drwxr-xr-x 4 vimal vimal  4096 Sep  9 12:17 .
drwxr-xr-x 3 root  root   4096 Aug 18 14:35 ..
drwxrwxrwx 6 vimal vimal  4096 Sep  9 12:15 DATA
drwxrwxrwx 7 vimal vimal  4096 Sep  9 12:15 PORTAL

Jika Anda berada di dalam folder bernama PORTAL di mana Anda ingin menyalin semua konten folder lain mengatakan DATA pada tingkat yang sama maka Anda akan melakukan

vimal@vimal-D3H:/var/www/html/PORTAL$ cp -a ../DATA/. .

Anda harus memperhatikan 2 titik. Titik terakhir mengatakan salin di sini di folder ini

dan

satu mengikuti / DATA /. mengatakan bahwa semua ISI di dalam folder DATA yang akan disalin, dan bukan folder DATA itu sendiri.

Jika Anda menghapus jejak ini "." dari / DATA /

maka seluruh folder DATA akan disalin di dalam PORTAL (dari tempat Anda mengatasinya).

krishna vimal
sumber