Hur man kopierar kataloger rekursivt med scp

0
179

Ett vanligt problem när du arbetar med filer är att tillämpa operationer rekursivt eller på alla undermapp i hela mappen. Verktyget scp används för att överföra filer och kataloger till fjärrservrar och stöder rekursiva operationer.

Kör scp rekursivt

Medan det är ibland snabbare för stora överföringar att göras i ett enda arkiv som kallas tarball, oftast kostar det inte att överföra enskilda filer.

Det är enkelt att kopiera rekursivt med scp: helt enkelt använd -r -flaggan utöver allt annat du hade lagt till:

scp -r localpath user@remote:/remotepath

Observera att detta uttryckligen är små bokstäver -r, till skillnad från många andra kommandon som använder eller kräver -R.

Detta kommer att fungera som att dra och släppa in/remotepath/, kopiera innehållet i localpath/till fjärrkontrollen och placera dem i/remotepath/localpath/.

Annons

Om du istället vill synkronisera localpath /Och /remotepath /, måste du överföra mappen till den överordnade mappen för /remotepath /, destinationen. I det här fallet skulle det vara /, rotkatalogen.

Detta kommer också att följa symboliska länkar i den lokala sökvägen när du löser filer, men kommer inte nödvändigtvis att skapa samma länkar på fjärrservern. Om du till exempel kopierar en helt ny fil till och från/etc/nginx/sites-enabled kommer den inte automatiskt att placeras i/etc/nginx/sites-available på fjärrkontrollen.

Använda rsync istället

Linux har flera verktyg för att hantera det här jobbet, och en av de bättre är rsync, som gör allt scp kan göra, men har många fler alternativ och är mycket snabbare att starta. Det kopierar inte heller filer som inte har ändrats, vilket gör det till ett utmärkt verktyg för att kontinuerligt “ synkronisera ” två kataloger till varandra utan att överföra data i onödan.

rsync fungerar i princip samma som scp, med några fler alternativ för att ange inställningarna:

rsync -a -essh ​​localpath/user @remote:/remotepath/

Flaggan -a anger arkivläge som aktiverar många vanliga alternativ samtidigt. -E ssh -flaggan ställer in rsync för överföring över SSH.

RELATERAT: Så här använder du rsync för att säkerhetskopiera dina data på Linux