
sftp를 사용하여 파일이 포함된 디렉터리를 전송하려고 하면 다음과 같은 오류 메시지가 나타납니다.
skipping non-regular file directory_name
이 디렉터리에는 여러 파일과 두 개의 하위 디렉터리가 포함되어 있습니다.
내가 뭘 잘못했나요?
답변1
sftp
와 마찬가지로 폴더(및 분명히 그 내용)를 복사할 때 이 옵션을 사용하여 폴더를 반복적으로 전송할 것임을 명시적 cp
으로 scp
알려야 합니다 .-r
따라서 -r
명령에 추가하십시오.
답변2
rsync
보안 연결을 통해 파일을 이동할 때 이는 다소 업계 표준에 해당합니다 .
rsync -alPvz ./source_dir server.com:destination_dir
이것이 제가 수년간 사용해 왔던 것입니다.
(이 -a
옵션은 디렉토리 재귀와 같은 작업을 처리합니다)
답변3
이것은 나에게 효과적입니다.
sftp
1) 원격 호스트에 접속하여
2) 복사하려는 원격 디렉터리로 전환합니다. (예: CD 음악)
3) 콘텐츠를 복사하려는 로컬 디렉터리로 변경합니다. (예: LCD 데스크탑)
4) 다음 명령을 실행하십시오.get -r *
답변4
귀하의 질문이 실제로 "sftp를 사용하여 디렉토리를 어떻게 전송합니까?"라면,
sftp -r user@server
하지만 디렉토리를 이전하는 경우 필요에 따라 두 가지 더 나은 옵션을 제안할 수 있습니다. sftp
SSH와 같은 명령 프롬프트에서 원격 서버에 로그인해야 하지만 원하는 것이 파일뿐이라면 더 쉽고 빠른 방법이 있습니다.
SCP
일회성 전송의 경우 업로드 시도는 다음과 같습니다.
# upload source directory to remote server
scp -rp source_dir user@server:dest
#download directory from remote server:
scp -rp user@server:source_dir dest
#specifying ssh key:
scp -rp -i ~/.ssh/key user@server:source_dir dest
#remote directory has spaces
scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest
동기화
디렉터리를 정기적으로 동기화하려는 경우 rsync를 사용하는 것이 더 합리적입니다. 두 디렉터리 간의 델타 작업을 수행하여 전송 시간과 네트워크 데이터를 절약합니다.
rsync -r -a -v -e ssh --delete source_dir user@server:dest
다음은 가장 일반적인 rsync 옵션 목록입니다: (여기에서 가져옴)
- --delete - 보낸 사람(시스템)에 존재하지 않는 파일을 삭제합니다.
- -v - 자세한 정보(-vv는 더 자세한 정보를 제공합니다)
- -e "ssh options" - ssh를 원격 쉘로 지정합니다.
- -a - 보관 모드 - 권한(소유자, 그룹), 시간, 심볼릭 링크 및 장치를 보존합니다.
- -r - 디렉토리로 재귀
- -z - 전송 중 파일 데이터 압축
- --exclude 'foldername' – 전송에서 해당 폴더를 제외합니다.
- -P – 전송 중 진행 상황 표시
도움이 되었기를 바랍니다!