1) 원격 클라이언트에서 SSH 세션을 실행하여 서버에서 파일을 가져옵니다.
2) 매우 광범위한 디렉토리 구조를 보유하는 서버가 있습니다.
3) 서버에 있는 파일에 대한 수천 개의 경로 이름이 포함된 목록이 있습니다. 그러나 이는 서버 전체의 작은 부분일 뿐입니다. 따라서 파일은 와일드카드 없이 디렉터리별로 가져오는 것이 아니라 하나씩 가져옵니다.
작업: 모든 파일 가져오기목록으로그리고 그것들을 모두 결합하십시오클라이언트 측에서 생성된 상대 경로.
내가 겪고 있는 문제는 sftp가 존재하지 않는 디렉터리에 파일을 쓸 수 없다는 것입니다.
get -p /q/w/e/r/t/y/file /base/q/w/e/r/t/y/file
q/w/e/r/t/y/의 모든 시퀀스가 /base/에 생성되지는 않습니다(첫 번째 하위 디렉터리도 아님)
참고: 이 해결 방법은 개별 파일에도 적용할 수 있습니다. 나중에 일괄적으로 만들어 보도록 하겠습니다.
중요하지 않은 참고 사항: 실제로 이러한 경로는 필요하지 않습니다. 하지만 동일한 이름을 가진 파일이 있을 수 있으며 새 위치에서 충돌해서는 안 됩니다. 따라서 공통 디렉토리의 모든 파일을 비우는 아이디어는 용납되지 않습니다.
답변1
sftp를 실행하기 전에 dirname과 함께 mkdir을 사용하십시오.
mkdir -p $(dirname /base/q/w/e/r/t/y/file)
dirname
추출할 파일의 전체 디렉터리 경로mkdir -p
전체 디렉토리 트리가 생성되었는지 확인합니다
(부분적으로 사용 가능한 경우에도).