파이썬 2.7.3을 사용하고 있습니다. 파이썬 스크립트를 사용하여 디렉토리 트리의 일부를 한 위치에서 다른 위치로 복사합니다. 복사해야하는 파일 중 일부는 심볼릭 링크입니다.Python 2.7.3 : 심볼릭 링크를 복사하고 따르지 않음
파이썬을 사용하여 심볼 링크를 따르지 않고 위치에서 다른 곳으로 복사하는 방법은 무엇입니까? (단지 '정규'파일처럼 맹목적으로 복사하기를 원합니다.)
은 follow_symlinks=False
을 지원하지만 이전 버전의 shutil은 지원하지 않습니다.
편집 : 자세한 내용은 :
이 스크립트의 목적은 지정된 위치에서 모든 파일을 개인 아카이브로를 분할하는 것입니다. 전체 디렉토리를 압축하고 아카이브를 분할하여이 작업을 수행 할 수 있음을 알고 있지만 하나의 큰 아카이브에 다시 참여하지 않고 각 아카이브를 개별적으로 추출 할 수 있어야합니다. 또한 각 아카이브는 지정된 크기보다 작아야합니다.
기본 접근 방식 :
- 모든 파일의 모든 크기를 가져옵니다 소스 디렉토리의 모든 파일에 대한 모든 절대 경로
- 정렬 모든 파일 (위치에 관계없이) 크기
- 파일을 복사하여 가져 오기 위치 X에서 tmp 위치까지 (복사 된 파일의 합계가 < = 최대 아카이브 크기 일 때까지)
- tmp의 아카이브 생성
- 청소 tmp에 위치 다시 4-
- 이동 여전히
모든 의견을 주시면 감사하겠습니다을 복사 할 파일이있는 동안. 감사.
내 질문에 대한 자세한 내용을 추가했습니다. 나는'shutil.copytree()'가 내 솔루션이 현재 설계된 방식으로 작동하지 않을 것이라고 생각한다. – rkyser
아마도 그렇지는 않지만,'copytree()'구현은'simlinks'가 true 일 때'copytree()'가 심볼릭 링크를 처리하는 방법을 보여줍니다. 왜 그것을 참고 자료로 사용하지 않습니까? 'shutil.copy()'또는'shutil.copy2()'를'shutil.copytree()'에서 몇 줄을 추가하고 그것을 사용하는 복사 방법으로 포장하십시오. – JAB
shutil.copytree()가'linkto = os.readlink (srcname)'다음에'os.symlink (linkto, dstname)'을 사용하는 것처럼 보입니다. 기본적으로 내가했던 일은 내 '일터'로 했어! 나는 그것이 그것을하는 방법다는 것을 의미한다 것을 나는 짐작한다. – rkyser