2016-08-20 11 views
0

한 호스트에서 다른 호스트로 매우 큰 파일을 이동하려고합니다. 또한 파일 이름이 너무 커서 xargs을 사용해야합니다. 또한 사용해야하는 디렉토리가 필요로하는 모든 하위 또한 내가 현재 디렉토리를xargs에서 scp를 사용하는 방법은 무엇입니까?

find . -name "*" -type f -print0 | xargs -0 scp -r [email protected]:/path/to/destination 

를 호스팅하는 소스에서 아래 명령을 사용하고

를 복사 할하지만 오류

scp: /path/to/destination: not a regular file 

답변

2

아래로 던지고있다 {}를 사용하여 대상 앞에 src 파일 이름을 넣습니다. 여기에 새로운 명령이 있습니다 :

find . -name "*" -type f -print0 | xargs -0 -I {} scp -r {} [email protected]:/path/to/destination 
+0

거의 없지만 그 하위 디렉토리도 복사해야합니다.하지만 지금은 하위 디렉토리의 내용 만 이동 중입니다. 둘째, 명령은 하나의 파일을 복사 할 때마다 암호를 묻습니다. 어떤 해결책? –

+0

디렉토리를 복사하려면 find 명령에서 -f 매개 변수를 제거하십시오. 항상 암호를 입력하고 싶지 않으면 공개 ssh id를 원격 시스템에 추가하고 ssh-agent를 사용하여 사용자의 키를 사용자 시스템에 저장하십시오. 에서 명령. –

+0

그래서'-f'를 삭제했고 하위 디렉토리의 파일이 두 번 복사됩니다. '/ path/to/destination'과'/ path/to/destination/source_folder /'에서 한 번 더. 내 문제를 이해할 수 있기를 바랍니다. –