인수 목록이 너무 길어 Samba Share에 복사 중입니다.

인수 목록이 너무 길어 Samba Share에 복사 중입니다.

우분투 12.04 LTS 64비트.

수천 개의 파일이 있는 디렉터리에서 Samba 공유로 예약된 작업 복사본을 만들려고 합니다(중복은 건너뛰는 동안). GUI를 통해 Samba 공유를 매핑했습니다.

내가 시도한 명령은 다음과 같습니다.

cp /home/security/Brick/* ~/.gvfs/"atm-bak-01.local/Brick의 캠" -n

이것을 찾았지만 필요한 구문으로 변경하는 방법을 모르겠습니다.

찾기 -max깊이 1 -이름 '*.prj' -exec mv -t ../prjshp {} +

어떤 힌트라도 대단히 감사하겠습니다.

답변1

문제는 쉘이 /home/security/Brick/*긴(너무 긴) 파일 목록으로 확장한다는 것입니다.~ 전에에 전달합니다 cp.

모든 디렉토리를 복사하려면 Brick아마도 가장 간단한 방법은 다음과 같습니다.

cp -rn /home/security/Brick ~/.gvfs/"cam on atm-bak-01.local"/

"recursive" 플래그를 사용하여 cp. 이렇게 하면 Brick 아래의 모든 구조도 복사됩니다(하위 디렉터리 포함).

한 가지 가능성은 for루프를 사용하는 것입니다.

for file in /home/security/Brick/*; 
do
cp -n $file ~/.gvfs/"cam on atm-bak-01.local/Brick"
done

또는 찾기를 사용하여:

find /home/security/Brick/ -type f -exec cp -n {} ~/.gvfs/"cam on atm-bak-01.local/Brick" \;

이 명령에서는 -type f파일만 선택하고(디렉토리 없음) 각 파일에 대해 지정된 명령을 실행합니다. 는 {}파일 이름으로 대체되고 절을 \;닫는 데 필요한 세미콜론입니다 -exec. 그렇지 않으면 쉘이 이를 해석하고 제거합니다. ).

이후 명령은 -exec원하는 것이 무엇이든 될 수 있습니다(예를 들어 아카이브 모드(타임스탬프 및 타당성 포함)에서 복사하고 덮어쓰는 데 cp -n사용할 수 있는 대신 다른 명령(cp -av하지만: 먼저 쉘 이스케이프, 글로빙 및 인용을 이해해야 합니다. 그렇지 않으면 많은 해를 끼칠 수 있습니다. --- 예를 참조하세요."쉘 학습").

찾기는 매우 강력한 명령입니다. 잘 배울 가치가 있습니다. 흥미로운 튜토리얼을 발견했습니다여기,여기그리고여기.

다음을 사용하여 백업 수행 정보 cp -n:

플래그 -n는 기존 파일을 덮어쓰지 않으므로 이전에 복사한 로컬 디렉터리의 파일을 변경하면~ 아니다다시 복사하면... 이전 버전을 백업할 수 있습니다.

이러한 이유로 다음과 같은 백업 또는 동기화 유틸리티를 사용하는 것이 좋습니다.조화또는재동기화, 이 일을 하려고요. 이러한 유틸리티는 변경된 파일만 업데이트하고 쓰기(및 네트워크 대역폭)를 최소화할 수 있으며 일반적으로 훨씬 안전합니다. 다음과 rsync같이 간단히 말하면 백업을 해결할 수 있습니다 .

rsync -azvv  /home/security/Brick   ~/.gvfs/"cam on atm-bak-01.local/Brick"

(마지막에 "/"를 추가하지 않도록 주의하십시오. 그렇지 않으면 rsync가 하위 디렉터리 Brick/Brick을 생성합니다. 예, rsync강력하고 때로는 매우 변덕스럽습니다.)

Unison은 멋진 그래픽 인터페이스를 가지고 있으며 저장소에 충돌하는 변경 사항이 있는지 알려줍니다. 그래서 이것이 제가 선호하는 옵션이 될 것입니다.

관련 정보