A célom csak másolás az összes fájl ~ / local_dir – [email protected] / var / www / html / target_dir a scp használatával, és ne hozzon létre local_dir kategóriát a local_dir könyvtárban.
/var/www/html/target_dir/files..
de nem
/var/www/html/target_dir/local_dir/files..
az -r paraméter használatakor
Megjegyzések
Válasz
scp -r argumentummal rendelkezik. Tehát próbálkozzon a következővel:
$ scp -r ~/local_dir [email protected]:/var/www/html/target_dir
Az -r argumentum ugyanúgy működik, mint az -r arg a cp-ben, a teljes mappát, az összes fájlt és alkönyvtárat átviszi belül.
Megjegyzések
- A parancsod létrehozta a
local_dir
könyvtárat a / var / www / html / target_dir könyvtárban a célom csak a fájlok másolása. - Sajnálom, tévedtem. Ezután egyszerűen ismételje meg a parancsot, de így:
$ scp -r ~/local_dir [email protected]:/var/www/html/
Ezután nevezze át az új könyvtárat, ha szükséges. - Vagy
$ scp -r ~/local_dir/* [email protected]:/var/www/html/target_dir
Bármi lebegteti a hajóját. - Változtassa a helyettesítő karaktert
*
ponttá.
és ' Másolja a könyvtár tartalmát (beleértve a dot fájlokat is), anélkül, hogy másolná magát a könyvtárat.scp -pr ~/local_dir/. [email protected]:/path/to/target_dir
- Sajnos a
.
használatát egy rosszul megvalósítottscp
" hibajavítás " (lásd: < superuser.com/questions/1403473/scp-error-unexpected-filename/… ). Arsync
működő alternatíva lenne.
Válasz
Ha a célod az összes fájl átvitele a local_dir
fájlból, a *
helyettesítő betűvel:
$ scp ~/local_dir/* [email protected]:/var/www/html/target_dir
A -r
opció jelentése „rekurzív”, ezért akkor kell megírnia, amikor egy egész könyvtárat vagy több könyvtárat próbál átvinni.
From man scp
:
-r Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal.
Tehát ha vannak alkönyvtárai a , az utolsó példa csak fájlokat továbbít, de ha beállítja a -r
beállítást, akkor fájlokat és könyvtárakat fog átvinni.
Megjegyzések
- 1+ Mivel a helyes válasz eléréséhez el kell olvasnia az elfogadott válasz megjegyzéseit, míg ez csak közvetlenül elmagyarázza.
Válasz
/.
hozzáfűzése a forráskönyvtár átviszi a tartalmát a könyvtár helyett. A helyettesítő karakteres megoldással ellentétben ez magában foglal majd minden rejtett fájlt is.
$ scp -r ~/local_dir/. [email protected]:/var/www/html/target_dir
A megoldás elismerése a roaima-ra kerül, de úgy gondoltam, hogy ezt tényleges válasz, nem csak megjegyzés.
Megjegyzések
- Sajnos ezt a megoldást egy rosszul megvalósított " hibajavítás " (lásd: < superuser.com/questions/1403473/scp-error-unexpected-filename/… ).
Válasz
Kövesse ezeket a lépéseket:
-
Könyvtár másolása
local_dir
összes alkönyvtárával:scp -r ~/local_dir [email protected] /var/www/html/target_dir
-
csak a
local_dir
, nem pedig maga alocal_dir
könyvtár:scp -r ~/local_dir/* [email protected] /var/www/html/target_dir
-
Ne használja:
scp -r ~/local_dir/. [email protected] /var/www/html/target_dir
as hibát dob (csak tesztelték és megkapta a következő hibát):scp: error: unexpected filename: .
megjegyzések
- A váratlan fájlnév hibáját is kapom. A helyettesítő karakter használata azonban sem működik, mert a könyvtárban annyi fájl van, amely meghaladja a karakterek korlátját a parancsok kibontásakor. macOS
- @RichardKiefer: Használhat helyettesítő karaktereket, például? a * gombbal további elkülöníteni a keresési eredményeket, majd továbbítani az scp-nek. Próbálja ki ezt a linket, és segíthet: Helyettesítő karakterek
- Köszönöm Syed, de az volt a lényegem, hogy valójában a mappában lévő összes elemet meg akarom célozni , és nem szűrhet semmit. És ha a könyvtáram túl sok, akkor a helyettesítő karakter csak nem fog működni.
- @RichardKiefer: Elnézést kérek Richardtól, az összes fájl másolásához használhatunk egy kis bash szkriptet. Használja:
ls -l | awk '{print $9}'
és irányítsa át az összes kimenetet (amely minden fájlnév lenne) egy txt fájlba. Olvassa el a txt fájlt egyenként, és használja ezt az inputot az scp-vel a fájlok másolásához:input=/home/user/filename.txt while IFS= read -r line
scp * [email protected]:/var/www/html/target_dir
nem azt csinálja, amit akar? Ha igen, kérjük, szerkessze részletesebben, mit próbál ' tenni & eddig megpróbálták.