Kuinka kopioida kaikki tiedostot hakemistosta etähakemistoon scp: n avulla?

Tavoitteenani on vain kopiointi kaikki tiedostot ~ / local_dir [email protected] / var / www / html / target_dir käyttäen scp äläkä luo local_dir-luokkaa local_dir.

/var/www/html/target_dir/files.. 

mutta ei

/var/www/html/target_dir/local_dir/files.. käytettäessä parametria -r

Kommentit

Vastaa

scp on -r-argumentti. Yritä siis käyttää:

$ scp -r ~/local_dir [email protected]:/var/www/html/target_dir 

Argumentti -r toimii samalla tavalla kuin -r arg cp: ssä, se siirtää koko kansion sekä kaikki tiedostot ja alihakemistot sisällä.

Kommentit

  • Komentosi loi local_dir -hakemiston hakemistoon / var / www / html / target_dir tavoitteeni on vain kopioida tiedostot.
  • Valitettavasti sain väärin. Toista sitten komento, mutta näin: $ scp -r ~/local_dir [email protected]:/var/www/html/ Nimeä sitten uusi hakemisto tarvittaessa.
  • Tai $ scp -r ~/local_dir/* [email protected]:/var/www/html/target_dir Mikä tahansa kelluu veneelläsi.
  • Vaihda jokerimerkki * pisteeksi . ja sinä ' kopioi hakemiston sisällön (mukaan lukien kaikki pistetiedostot) kopioimatta itse hakemistoa. scp -pr ~/local_dir/. [email protected]:/path/to/target_dir
  • Huonosti toteutettu scp. -toiminnon. / div> " virhekorjaus " (katso < superuser.com/questions/1403473/scp-error-unexpected-filename/… ). rsync olisi toimiva vaihtoehto.

Vastaa

Jos tavoitteesi on siirtää kaikki tiedostot tiedostosta local_dir * jokerilla on temppu:

$ scp ~/local_dir/* [email protected]:/var/www/html/target_dir 

-r -vaihtoehto tarkoittaa ”rekursiivisesti”, joten sinun on kirjoitettava se, kun yrität siirtää koko hakemistoa tai useita hakemistoja.

Alkaen man scp:

-r Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal. 

Joten jos sinulla on alihakemistoja local_dir, viimeinen esimerkki siirtää vain tiedostoja, mutta jos valitset vaihtoehdon -r, se siirtää tiedostot ja hakemistot.

Kommentit

  • 1+ Koska sinun on luettava hyväksytyn vastauksen kommentit, jotta pääset oikeaan vastaukseen, kun tämä selittää sen suoraan.

vastaus

Liitetään /. lähdehakemisto siirtää sen sisällön itse hakemiston sijaan. Päinvastoin kuin jokerimerkkiratkaisu, tämä sisältää myös kaikki piilotetut tiedostot.

$ scp -r ~/local_dir/. [email protected]:/var/www/html/target_dir 

Tämän ratkaisun hyvitys menee roaimaan, mutta ajattelin, että se tulisi lähettää todellinen vastaus, ei vain kommentti.

Kommentit

vastaus

Noudata näitä ohjeita:

  1. Kopioi hakemisto local_dir ja kaikki sen alihakemistot:

    scp -r ~/local_dir [email protected] /var/www/html/target_dir 
  2. kopioi vain local_dir eikä hakemistoa local_dir itse:

    scp -r ~/local_dir/* [email protected] /var/www/html/target_dir 
  3. Älä käytä: scp -r ~/local_dir/. [email protected] /var/www/html/target_dir as se heittää virheen (juuri testattu ja vastaanotettu seuraava virhe):

    scp: error: unexpected filename: . 

kommentit

  • Saan myös odottamattoman tiedostonimen virheen. Jokerimerkin käyttö ei kuitenkaan toimi, koska hakemistossa on niin monta tiedostoa, joka ylittää komentojen merkkirajoituksen, kun jokerimerkki laajennetaan. macOS
  • @RichardKiefer: Voit käyttää jokerimerkkejä kuten? painamalla * eristääksesi hakutulokset edelleen ja välittämällä sen scp: lle. Kokeile tätä linkkiä, se voi auttaa: Jokerot
  • Kiitos Syed, mutta totesin, että haluan todella kohdistaa kaikkiin kansion elementteihin ja älä suodata mitään. Ja jos hakemistossa on liikaa, jokerimerkki ei vain toimi.
  • @RichardKiefer: Pahoittelen Richardia, jotta voimme kopioida kaikki tiedostot, voimme käyttää pientä bash-komentosarjaa. Käytä: ls -l | awk '{print $9}' ja ohjaa kaikki ulostulot (jotka olisivat kaikki tiedostonimet) txt-tiedostoon. Lue txt-tiedosto, yksi rivi kerrallaan, ja kopioi tiedostot scp: n kanssa: input=/home/user/filename.txt while IFS= read -r line

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *