Kif tuża l-kmand cp b'mod effettiv fil-Linux [14 Eżempji]


Qosor: F'din il-gwida faċli biex issegwi, aħna ser niddiskutu xi eżempji prattiċi tal-kmand cp. Wara li jsegwu din il-gwida, l-utenti jkunu jistgħu jikkopjaw fajls u direttorji faċilment fil-Linux billi jużaw l-interface tal-linja tal-kmand.

Bħala utenti Linux, aħna jinteraġixxu mal-fajls u direttorji tal-ikkupjar. Ċertament, nistgħu nużaw maniġer tal-fajl grafiku biex inwettqu l-operazzjoni tal-kopja. Madankollu, ħafna mill-utenti tal-Linux jippreferu jużaw il-kmand cp minħabba s-sempliċità u l-funzjonalità rikka tiegħu.

F'din il-gwida faċli għall-Bidu, se nitgħallmu dwar il-kmand cp. Kif jissuġġerixxi l-isem, il-kmand cp jintuża biex jikkopja fajls u direttorji f'mogħdija partikolari.

Matul din il-gwida, se nifhmu l-użu tal-kmand cp billi tuża eżempji prattiċi li jistgħu jintużaw minn jum għal jum.

Mela ejja nibdew.

Werrej

Sintassi tal-Kmand Cp

Is-sintassi tal-kmand cp hija identika għal kmandi Linux oħra. F'livell għoli, huwa maqsum f'żewġ partijiet - għażliet u argumenti:

$ cp [OPTIONS] <SOURCE> <DEST>
$ cp [OPTIONS] <SOURCE-1> <SOURCE-2> ... <DIRECTORY>

Fis-sintassi ta' hawn fuq, il-parentesi kwadri ([]) jirrappreżentaw l-argumenti fakultattivi filwaqt li l-parentesi angolari (<>) jirrappreżentaw l-argumenti obbligatorji.

1. Kif tikkopja Fajl fil-Linux

Wieħed mill-użu bażiku tal-kmand cp huwa li tikkopja fajl f'direttorju kurrenti. Ħafna mill-utenti tal-ħin iwettqu din l-operazzjoni biex jieħdu backup tal-konfigurazzjoni importanti.

Pereżempju, ħafna drabi noħolqu kopja ta' backup tal-fajl /etc/ssh/sshd_config qabel ma naġġornaw il-konfigurazzjoni SSH.

Biex tifhem l-użu, ejja noħolqu fajl sempliċi:

$ touch file-1.txt

Sussegwentement, oħloq kopja tal-fajl billi tuża l-kmand li ġej:

$ cp file-1.txt file-2.txt

2. Uri l-Progress tal-Kmand tal-Kopja

Fl-eżempju preċedenti, użajna l-kmand ls biex nivverifikaw jekk l-operazzjoni tal-kopja tal-fajl rnexxietx jew le. Madankollu, ma jagħmilx sens li tuża kmand ieħor biss biex tivverifika r-riżultat tal-kmandi preċedenti.

F'każijiet bħal dawn, nistgħu nippermettu l-modalità verbose billi tuża l-għażla -v, li tipprovdi dijanjostika għal kull fajl ipproċessat.

Ejja nagħmlu kopja tal-fajl file-1.txt billi tuża l-kmand li ġej:

$ cp -v file-1.txt file-3.txt

Fl-output ta 'hawn fuq, il-vleġġa tirrappreżenta l-fajl li qed jiġi kkupjat. L-argument tan-naħa tax-xellug huwa l-fajl tas-sors filwaqt li l-argument tan-naħa tal-lemin huwa l-fajl tad-destinazzjoni.

3. Kif tikkopja Fajls Multipli fid-Direttorju

S'issa ħdimna b'fajl wieħed u d-direttorju tax-xogħol attwali biss. Madankollu, fl-ambjent tal-produzzjoni reali, irridu naħdmu ma 'numru kbir ta' fajls. Wieħed mill-każijiet ta 'użu komuni f'ambjenti bħal dawn huwa li tikkopja fajls multipli f'direttorju wieħed.

Ovvjament, nistgħu nwettqu l-kmand cp diversi drabi biex niksbuh, iżda dan mhux se jkun l-aktar mod effettiv. Biex twettaq tali operazzjoni b'mod effettiv, nistgħu nużaw sintassi alternattiva tal-kmand cp.

Allura, l-ewwel, oħloq direttorju ġdid bl-isem dir-1:

$ mkdir dir-1

Issa, ejja nikkopja t-tliet fajls fid-direttorju dir-1 billi tuża l-kmand uniku:

$ cp -v file-1.txt file-2.txt file-3.txt dir-1

L-output ta 'hawn fuq juri li l-fajls kollha ġew ikkupjati fid-direttorju dir-1. Ukoll, huwa importanti li wieħed jinnota li, biex tuża din is-sintassi alternattiva, id-direttorju għandu jkun diġà preżenti u għandu jkun l-aħħar argument tal-kmand.

4. Kif tevita li tikteb fuq il-fajl

B'mod awtomatiku, il-kmand cp jissostitwixxi l-fajl tad-destinazzjoni, li jfisser li se jikteb fuq il-fajl jekk jeżisti fid-destinazzjoni bl-istess isem. Madankollu, nistgħu tiddiżattiva din l-imġieba default billi tuża l-għażla -n.

Biex tifhem dan, ejja nippruvaw tikteb fuq il-fajl eżistenti:

$ cp -n -v file-1.txt file-2.txt

F'dan l-eżempju, użajna l-għażla -v biex nuru li l-fajl file-2.txt ma ġiex miktub fuqu.

5. Kif tikteb fuq il-fajl b'Konferma

Fl-eżempju preċedenti, rajna kif nevitaw il-kitba fuq il-fajl tad-destinazzjoni. Madankollu, xi kultant irridu nissostitwixxu d-destinazzjoni tal-fajl b'mod aktar sikur.

F'każijiet bħal dawn, nistgħu nużaw l-għażla -i tal-kmand biex nagħmlu l-operazzjoni tal-kopja interattiva. Din l-għażla turi l-messaġġ ta’ twissija u tistenna l-konferma tal-utent qabel tikteb fuq il-fajl.

Biex turi dan, ejja nippruvaw niktbu fuq il-fajl eżistenti:

$ cp -i file-1.txt file-2.txt

cp: overwrite 'file-2.txt'?

Kif nistgħu naraw, il-kmand qed jistenna konferma. Eżatt bħal kmandi oħra tal-Linux, nistgħu nużaw y biex inkomplu jew n biex twaqqaf l-operazzjoni.

Din l-imġieba default mhux interattiva tal-kmand cp mhix sikura ħafna. Hemm ċans li l-utent jista’ jikteb fuqu konfigurazzjoni importanti bi żball. Għalhekk xi wħud mid-distribuzzjonijiet tal-Linux jinfurzaw l-imġieba interattiva awtomatikament billi jużaw il-kmand tal-alias:

$ alias cp='cp -i'

6. Ikteb Fajl Biss jekk is-Sors Huwa Aktar Ġdid

Fl-eżempju preċedenti, rajna kif tuża l-mod interattiv. Madankollu, xi kultant, utent jista 'jikteb fuq il-fajl l-aktar ġdid involontarjament.

Biex nevitaw każijiet bħal dawn suxxettibbli għall-iżbalji, nistgħu nużaw l-għażla -u, li tipprova operazzjoni ta 'kopja biss jekk is-sors ikun aktar ġdid mid-destinazzjoni jew jekk il-fajl ma jkunx preżenti fid-destinazzjoni.

L-ewwel, aġġorna l-timestamp tal-fajl tas-sors:

$ touch -t 10101010 file-1.txt
$ ls -l file-1.txt

Fl-eżempju ta 'hawn fuq, użajna l-għażla -t tal-kmand touch biex tissettja l-timestamp tal-fajl għal 10-Oct-2010.

Sussegwentement, ejja naġġornaw il-timestamp tal-fajl tad-destinazzjoni għall-ħin attwali:

$ touch file-2.txt

Issa, ejja nippruvaw inwettqu operazzjoni ta' kopja billi tuża l-għażla -u:

$ cp -u -v file-1.txt file-2.txt

Hawnhekk, nistgħu naraw li l-operazzjoni ta 'kopja ma ġietx ippruvata minħabba li l-fajl tad-destinazzjoni huwa aktar ġdid mis-sors.

Fl-aħħarnett, ejja naqsbu l-argumenti tas-sors u tad-destinazzjoni u nwettqu l-operazzjoni tal-kopja:

$ cp -u -v file-2.txt file-1.txt

Fl-output ta 'hawn fuq, nistgħu nosservaw li l-operazzjoni tal-kopja tirnexxi minħabba li l-fajl tas-sors huwa aktar ġdid mid-destinazzjoni.

7. Kif tagħmel backup tal-fajl qabel il-kitba mill-ġdid

Nistgħu nagħtu struzzjonijiet lill-kmand cp biex jieħu backup tal-fajl tad-destinazzjoni qabel ma jikteb fuqu. Biex niksbu dan nistgħu nużaw l-għażla --backup, li twettaq backups awtomatizzati.

$ cp --backup=numbered -v file-1.txt file-2.txt

F'dan l-eżempju, użajna l-politika ta' backup numerata. Din il-politika tuża numri inkrementali fl-ismijiet tal-fajls tal-backup.

Biex tifhem dan, ejja tesegwixxi l-istess kmand diversi drabi u osserva l-output:

$ cp --backup=numbered -v file-1.txt file-2.txt
$ cp --backup=numbered -v file-1.txt file-2.txt
$ cp --backup=numbered -v file-1.txt file-2.txt

8. Kif Tisforza l-Kopja biex tikteb fuq il-fajl

Fil-ftit eżempji preċedenti, rajna kif tikteb fuq il-fajl b'mod aktar sikur. Madankollu, f'xi każijiet rari, ir-rekwiżit huwa li l-fajl jissostitwixxi. Madankollu, m'hemmx garanzija li l-operazzjoni tirnexxi kull darba.

Pereżempju, l-operazzjoni tal-kopja tfalli jekk il-fajl tad-destinazzjoni ma jkollux il-permessi tal-kitba. Ejja nuru dan b'eżempju.

L-ewwel, ibdel il-permessi tal-fajl tad-destinazzjoni:

$ chmod 444 file-2.txt
$ ls -l file-2.txt

Issa, ejja nippruvaw niktbu fuq il-fajl file-2.txt:

$ cp file-1.txt file-2.txt

Fl-output ta 'hawn fuq, nistgħu naraw li l-kmand falla bil-permess miċħud żball.

Biex negħlbu din il-limitazzjoni, nistgħu nużaw l-għażla -f, li tħassar il-fajls tad-destinazzjoni u tipprova l-operazzjoni tal-kopja jekk il-fajl tad-destinazzjoni ma jistax jinfetaħ.

Issa, ejja nużaw l-għażla -f biex tikteb fuq il-fajl bil-qawwa:

$ cp -f -v file-1.txt file-2.txt

9. Kif Neħħi l-Fajl tad-Destinazzjoni Qabel l-Ikkupjar

Fl-eżempju preċedenti, rajna kif tneħħi l-fajl tad-destinazzjoni jekk ikun hemm żball waqt li tħaddem. Madankollu, xi kultant ir-rekwiżit huwa li tneħħi l-fajl tad-destinazzjoni l-ewwel u mbagħad twettaq l-operazzjoni tal-kopja.

Biex nissodisfaw tali rekwiżit, nistgħu nużaw l-għażla --remove-destination.

$ cp --remove-destination -v file-1.txt file-2.txt

Fl-output ta 'hawn fuq, nistgħu naraw li l-kmand cp l-ewwel ineħħi l-fajl tad-destinazzjoni u mbagħad iwettaq l-operazzjoni tal-kopja.

10. Kif Oħloq Fajl Hard Link Minflok Ikkopjar

Nistgħu noħolqu rabta iebsa minflok ma noħolqu kopja ġdida tal-fajl tas-sors. Din l-għażla għandha rwol importanti meta jkun hemm skarsezza ta 'spazju fuq disk.

Allura, ejja nużaw l-għażla -l biex noħolqu hard link:

$ cp -l -v file-1.txt file-4.txt

Issa, ejja niċċekkjaw in-numri tal-inode taż-żewġ fajls biex tivverifika l-hard links:

$ ls -i1 file-1.txt file-4.txt

Fl-output ta 'hawn fuq, in-numri fl-ewwel kolonna jirrappreżentaw in-numri tal-inode.

11. Kif Oħloq Fajl ta' Soft Link Minflok Ikkopja

B'mod simili, nistgħu noħolqu soft link minflok ma noħolqu kopja ġdida billi tuża l-għażla -s kif muri hawn taħt:

$ cp -s -v file-1.txt file-5.txt

Issa, ejja nivverifikaw li r-rabta simbolika ġiet maħluqa b'mod korrett:

$ ls -l file-5.txt

Fl-output ta 'hawn fuq, l-aħħar kolonni jirrappreżentaw ir-relazzjoni ta' rabta simbolika.

12. Kif tippreserva l-attributi tal-fajl waqt l-ikkupjar

Hemm diversi attributi assoċjati mal-fajl, bħall-ħin tal-aċċess tiegħu, il-ħin tal-modifika, il-permessi, eċċ. B'mod awtomatiku, dawn l-attributi ma jiġux ippreservati waqt l-ikkupjar tal-fajl. Biex tegħleb din l-imġiba default nistgħu nużaw l-għażla -p.

Biex tifhem dan, l-ewwel, aġġorna l-timestamp tal-file-1.txt:

$ touch -t 10101010 file-1.txt

Issa, ejja noħolqu kopja ta 'dan il-fajl billi nippreservaw l-attributi kollha tiegħu:

$ cp -p -v file-1.txt file-6.txt

Fl-aħħarnett, ivverifika l-timestamp tal-fajl file-6.txt:

$ ls -l file-6.txt

13. Kif Twettaq Operazzjoni ta' Kopja Rikursiva

S'issa rajna kif tikkopja fajl wieħed. Madankollu, ħafna drabi għandna nikkopjaw il-fajls u s-subdirettorji kollha tad-direttorju partikolari.

F'każijiet bħal dawn, nistgħu nużaw il-mod rikorsiv jew billi tuża l-għażla -r jew -R.

Allura, ejja noħolqu direttorju u żid ftit fajls u sottodirettorji taħtu:

$ mkdir -p dir-1/dir-2
$ touch dir-1/file-1.txt dir-1/dir-2/file-2.txt

Sussegwentement, ivverifika li l-istruttura tad-direttorju tkun inħolqot b'mod korrett:

$ tree dir-1

Issa, ejja nikkopja d-direttorju dir-1 b'mod rikorsiv billi tuża l-kmand li ġej:

$ cp -r -v dir-1 dir-3

Fl-aħħarnett, ivverifika li l-fajls u s-subdirettorji kollha ġew ikkupjati b'suċċess:

$ tree dir-3

14. Kif tikkopja direttorji multipli

Simili għall-fajls, nistgħu nikkopja direttorji multipli rikorsivi bl-użu ta 'kmand wieħed. Madankollu, biex jinkiseb dan id-direttorju tad-destinazzjoni għandu jkun diġà preżenti u għandu jkun l-aħħar argument fil-kmand. Ejja nifhmu dan b'eżempju.

L-ewwel, oħloq direttorju direttorju ġdid:

$ mkdir dir-4

Issa, ejja nikkopja d-direttorji dir-1 u dir-3 fid-direttorju dir-4 billi tuża l-kmand hawn taħt:

$ cp -r -v dir-1 dir-3 dir-4

B'mod simili, nistgħu nużaw l-għażla -t tal-kmand biex niksbu l-istess riżultat. Din l-għażla tippermettilna nispeċifikaw id-direttorju tad-destinazzjoni. Allura nistgħu nużawha wkoll bħala l-ewwel argument:

$ cp -t dir-4 -r -v dir-1 dir-3

F'dan l-artikolu, iddiskutejna kif tikkopja fajls u direttorji bl-użu tal-kmand cp. Dawk li jibdew jistgħu jirreferu għal dawn l-eżempji fil-ħajja ta 'kuljum waqt li jaħdmu ma' sistemi Linux.

Tista' wkoll tħobb:

  • Progress – Uri Perċentwal ta' Dejta Kkupjata għal Kmandi (cp, mv, dd, tar)
  • Immonitorja l-Progress tad-Data (Kopja/Backup/Kkompressa) billi tuża Kmand ‘pv’
  • Kmand Avvanzat tal-Kopja – Juri l-Istrixxa tal-Progress Waqt li Tikkopja Fajls/Folders Kbar fil-Linux

Taf bl-aħjar eżempju ieħor tal-kmand cp fil-Linux? Għidilna l-fehmiet tiegħek fil-kummenti hawn taħt.