나는 Linux (centos) 시스템을 사용하고 있습니다. 이미
. 이제 내 질문은 한 시스템에서 다른 시스템으로 파일을 복사하는 방법입니다.
내 환경에 및 System B
. 저는 System A
머신을 사용하고 있고 다른 머신은 System B
머신.
System B
에서 System A
로 파일을 복사하려면 어떻게해야하나요? 그리고 System A
에서 System B
?
댓글
답변
구문 :
scp <source> <destination>
받는 사람 B
에 로그인 한 상태에서 B
에서 A
(으)로 파일 복사 :
scp /path/to/file username@a:/path/to/destination
iv id에 로그인 한 상태에서 B
에서 A
(으)로 파일을 복사하려면 = “2a634c09ca”>
:
scp username@b:/path/to/file /path/to/destination
댓글
- 명확하게 말하면 일반적으로 '
scp
를 사용하여 원격 서버 (시스템)에 로그인 한 상태에서 로컬 컴퓨터 (시스템 A)와 파일을 복사하지 마십시오. B)ssh
.scp
는 원격 서버에 로그인하고 파일을 복사 한 다음 한 프로세스에서 다시 로그 아웃하므로 로컬 컴퓨터의 셸에서 실행하면됩니다. 즉, SSH를 통해 시스템 B에 로그인하고 시스템 B와 시스템간에 파일을 복사하려는 경우scp
를 사용할 수 있습니다. ' C. - @DopeGhoti. 예, ' 두 원격 컴퓨터간에 파일을 이동할 수 없습니다. 소스 또는 대상은 로컬 파일이어야합니다. 그러나 ssh를 사용하여 원격 시스템에 로그인하면 해당 시스템의 ' 명령 줄에서 두 원격 시스템간에 파일을 복사 할 수 있습니다.
- 또한, 기억해야 할 중요한 점은 권한이있는 대상 머신의 폴더로만 scp 할 수 있다는 것입니다. 대상 사용자에게 권한이없는 대상으로 복사하려는 경우 먼저 파일을 사용자 '의 홈 디렉토리 또는 하위 디렉토리에 복사 한 다음 ssh를 대상 시스템 및 sudo를 최종 대상으로 이동
- -r (재귀 적) 및 -p (시스템 메타 데이터 보존)를 기억하십시오. scp -rp < file1 > < file2 >
- 예,
-P
는 원격 호스트의 TCP 포트를 지정합니다.ssh
는-p
를 사용하기 때문에 매번 저를 잡습니다.
Answer
대체 방법이 필요한 경우
sshfs를 설치합니다. ubuntu / debian을 사용하는 경우 :
sudo apt-get install sshfs
또는 centos / rhel을 사용하는 경우 :
sudo yum install fuse-sshfs
또는 macOS
brew install sshfs
빈 디렉토리 만들기
mkdir /home/user/testdir
두 디렉토리를 “연결”또는 “마운트”
sshfs [email protected]:/remote/dir /home/user/testdir
디렉터리 “연결 해제”
fusermount -u /home/user/testdir
BSD 및 macOS에서 파일 시스템을 마운트 해제하려면 :
umount mountpoint
또는
diskutil unmount mountpoint
자세한 내용은 linuxjournal.com libfuse / sshfs
댓글
- 이 질문은 구체적으로 해당 OS가 CentOS임을 나타냅니다. 데비안에서 파생되지 않았습니다.
apt-get
는 데비안주의입니다. 올바른 패키지 관리자는yum
또는 실제로 오래된 CentOS 버전의 경우up2date
또는rpm
. - +1이 질문에 대한 답변은 문맥과 다를 수 있지만 여전히 저를 도왔고 제가 볼 수있는 한 다른 사람들도 도움이되었습니다.
- 관련이 없지만 ' 100 만 달러의 답변 xD
- 올바르게 이해하면 원격 파일에 대한 액세스 권한이 부여되지만 복사하지는 않습니까?
- @ ToolmakerSteve you ' 완벽하게 맞습니다. 가짜 디렉터리 (마운트)를 생성하여 원하는 모든 도구를 사용하여 사물을 복사하거나 이동할 수 있습니다.
cp
,mv
,rm
,rsync
,unison
…scp
명령은 파일 만 복사 할 수 있습니다.
답변
때로는 tar로 멋지게 꾸며야 할 때가 있습니다.
tar -C / -cf - \ opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \ --exclude=opt/widget/local.conf | ssh otherhost tar -C / -xvf -
댓글
- 창의성? 이것이 우리가 테이프 드라이브를 공유하는 방법입니다. 🙂
- 이게 어떤 역할을하는지 말씀해 주시겠습니까? 예를 들어 ' cron '이 파일 복사와 어떤 관련이 있는지 모릅니다!
- @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget은 tar 아카이브에 포함될 개별 파일입니다. 요점은 때때로 당신이 화려해야하는 이유를 설명하는 것이 었습니다. 이 일련의 명령은 ssh 연결을 통해 tar 아카이브를 스트리밍하고 다른 쪽에서 아카이브를 해제합니다. 따라서 tar 아카이브는 디스크에 기록되지 않습니다. 나는 때때로 이것을 하나의 명령으로 복사 할 파일을 체리 선택하는 데 사용합니다.
- 오! 나는 첫 번째 ' / '가 소스 경로라고 가르쳤습니다! (무엇입니까?) 어리석은 질문이었습니다! 감사. 🙂
- Tar는 " / "로 chdir하므로 다음 모든 경로는 " / ".
답변
답변
공통 OS 중 하나가있는 경우 여러 코어를 사용한다는 점을 제외하고 gzip과 동일한 pigz를 설치할 수 있습니다. 빠른 네트워크를 통해 더 빨라집니다. 내 명령이 약간 다릅니다.
tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S"
또는 파일을 가져 오는 다른 방법
ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S
또는
ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz
댓글
- 그리고 ssh -J를 사용하여 프록시 서버를 통과 할 수 있습니다.
답변
SSH로 제어되는 NVIDIA Jetson 컴퓨터를 통해 작동하는 더 간단한 방법은 SFTP (SSH 파일 전송 프로토콜)에 연결하는 것입니다.
문서를 이동한다고 가정합니다. UFO_blueprint.odt
NASA의 원격 서버에서 내 문서로 이동합니다.
-
cd
파일을 저장할 위치로
$ cd Documents
- 연결
$ sftp sammy@your_server_ip_or_remote_hostname
- 전송할 파일이있는 디렉토리로 이동합니다.
$ cd NASA/secret_files/
- 전송
$ get UFO_blueprint.odt
전체 디렉토리를 얻으려면 대신
$ get -r secret_files/
댓글
- 파일 업로드 명령
답변
파일 및 폴더의 Unix / Linux 재귀 사본 다음 코드를 사용하여 보안 셸을 통해 :
scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path>
전체 예는 다음과 같습니다.
scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
호스트 이름을 확인할 DNS 서버가없는 경우 IP 주소를 대신 사용하십시오. 위의 예는 다음과 같습니다.
scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
Answer
실행중인 경우 다른 포트의 SCP / SSH는 대문자 -P
포트 옵션을 지정해야합니다.
예 :
scp -P 7121 /users/admin/downloads/* [email protected]:/home/
댓글
- 이 질문은 7 년 전이며 많은 답변이 있습니다. 이미. ssh가 기본이 아닌 포트를 사용할 수 있고 ssh 클라이언트 '의
-P
옵션이 필요한 것은 사실이지만 ' 당면한 문제에 실제로 도움이되지 않습니다. 최근 질문에 집중 해보세요.
scp
는 종종 성가신 돌이됩니다. 필요에 맞게 사용할 수 있다면 linuxjournal.com/article/8904 를 사용해보십시오. 원격 파일 시스템을 로컬로 마운트합니다.ssh
를 사용하는 원격 시스템의 로컬dir/
:tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
$wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to
참조 1 참조 2scp
가 가장 좋고 가장 쉬운 방법입니다. 그래서 모드는 누군가가 다른 사람에게 갈 것처럼 중복 플래그를 제거하십시오. 가장 유용한 답변은 누락됩니다.