하나의 명령으로 scp를 통해 여러 파일을 복사하는 방법은 무엇입니까? 있습니다. 어떻게해야합니까? 나는 가지고있다 rsync 또는

한 PC에서 다른 PC로 많은 파일을 전송해야합니다 (두 Linux 모두). 나는 그것을 사용 scp하고 싶지만 scp한 번에 하나의 파일 만 전송할 수 있습니다.

어떻게해야합니까?

나는 가지고있다

  • rsync 또는 다른 프로토콜을 사용할 수 없음
  • 암호가없는 인증서를 사용할 가능성이 없습니다 (그러나 암호가있는 인증서가있는 경우)
  • 전송할 파일 목록 및 다른 서버에있는 파일의 대상 경로가있는 목록
  • 파일은 많은 디렉토리에 분산되어 있으며 복사하려는 디렉토리의 모든 파일이 아닙니다.

가능한 경우 대역폭을 절약하기 위해 투명하게 gzip 및 ungzip을 사용하고 싶습니다!

이게 가능해?



답변

사용 tar:

tar cvzf - -T list_of_filenames | ssh hostname tar xzf -


답변

scp를 사용하고 싶지만 scp는 한 번에 하나의 파일 만 전송할 수 있습니다.

적어도 scp대부분의 Linux 배포판에 포함 된 OpenSSH가 제공 하는 명령에 대해서는 사실이 아니라고 확신합니다 .

나는 scp file1 file2 ... fileN user@host:/destination/directory/상당히 자주 사용 합니다.

투명한 압축을 위해 SSH 프로토콜에는이 기능이 내장되어 있으며 명령 행에 옵션을 scp제공하면이를 사용할 수 있습니다 -C. 비슷한 작은 파일이 많으면 akira가 제안한 tar + gz 옵션이 scp각 파일을 별도의 엔티티로 압축하는 파일 간의 유사성을 사용할 수 있으므로 더 나은 압축을 얻을 수 있습니다 . 나는 일반적으로 scp를 사용하는 것을 선호하지만 부분 전송을 재개하는 것이 더 쉽기 때문에 (또는이 상황에서 질문자가 옵션을 가지고 있지 않다는 것을 알고 있지만) rsynctar + gz 옵션의 전체를 다시 시작하고 공유하는 것이 더 쉽기 때문에 스트림 압축 장점.


답변

scp -r yourdir otherhost:/otherdir작동 하지 않습니까?

이것을 시도하십시오 :

tar cfz - . | ssh otherhost "cd /mydir; tar xvzf -"

z타르에 -flag 압축을 수행합니다. 또는 -C를 사용하여 ssh를 사용할 수 있습니다.

tar cf - . | ssh -C otherhost "cd /mydir; tar xvf -"


답변

RHEL5에서는 특수 문자 (공백과 같은)가 포함 된 파일 목록을 안전하게 복사 할 수있는 유일한 방법이 있습니다. 쉘 스크립트를 작성하고 다음을 포함하십시오.

FILE="/path/filename"
while read line; do
scp "$line" username@servername:/destination/
done < $FILE


답변

많은 문제없이 할 수 있습니다.

각 파일 옆에 호스트 이름으로 파일 목록을 만들고 scp가 잘 파싱하는 것처럼 보입니다. 즉.

srchost=`hostname`
myfiles="${srchost}:~/.bashrc ${srchost}:~/.bash_profile ${srchost}:~/.vimrc ${srchost}:~/.viminfo ${srchost}:~/.toprc ${srchost}:~/.dir_colors"
scp -v $myfiles $HOME

Scp는이 구문으로 잘 작동하는 것 같습니다. 각 파일 옆에 호스트 이름없이 시도했지만 첫 번째 파일 다음에 실패했습니다. 나는 이것에 대해 이전에 사용한 또 다른 구문을 회상하고 그것을 찾으면 게시 할 것입니다.


답변

부분적으로 이와 같은 명령을 사용하여 파일 목록에서 아카이브를 만드는 것이 좋습니다.

tar -cvf allfiles.tar -L mylist.txt

그런 다음 scp를 사용하여 아카이브를 다운로드하십시오.

scp user @ remotehost : ~ / allfiles.tar

/programming/8033857/tar-archiving-that-takes-input-from-a-list-of-files


답변