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_dirMikä 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/… ). rsyncolisi 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
- Valitettavasti huonosti toteutettu " virhekorjaus " (katso < superuser.com/questions/1403473/scp-error-unexpected-filename/… ).
vastaus
Noudata näitä ohjeita:
-
Kopioi hakemisto
local_dirja kaikki sen alihakemistot:scp -r ~/local_dir [email protected] /var/www/html/target_dir -
kopioi vain
local_direikä hakemistoalocal_diritse:scp -r ~/local_dir/* [email protected] /var/www/html/target_dir -
Älä käytä:
scp -r ~/local_dir/. [email protected] /var/www/html/target_diras 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
scp * [email protected]:/var/www/html/target_dirtee mitä haluat? Jos näin on, muokkaa tarkemmin siitä, mitä ' yrität tehdä & ovat toistaiseksi yrittäneet.