cp는 Mac에서 다르게 작동합니다.

cp는 Mac에서 다르게 작동합니다.

전체 폴더를 복사하려면 다음 코드가 있습니다.

#!/bin/bash

B="H:\pdf2txt"

DST_DIR="H:\Test_Folder"

cp -r "$B" "$DST_DIR"

이는 Windows 컴퓨터에서는 예상대로 작동하지만 Mac으로 변경하면 다음과 같습니다.

#!/bin/bash

B="/Volumes/Mac_Storage/pdf2txt"

DST_DIR="/Volumes/Mac_Storage/Test_folder"

cp -r "$B" "$DST_DIR"

폴더를 복사한 다음 파일 경로가 너무 길어 처리할 수 없을 때까지 폴더에 동일한 내용이 포함된 또 다른 복사본을 추가한 다음 다시 동일한 내용을 추가합니다. 폴더 구조는 다음과 같습니다.

Test_Folder
|   └── pdf2txt 
|       ├── test1.txt
|       ├── test2.txt
|       └── pdf2txt
|           ├── test1.txt
|           ├── test2.txt
|           └── pdf2txt
|               ├── test1.txt
|               ├── test2.txt
|               └── pdf2txt
|                   ├── test1.txt
|                   ├── test2.txt
|                   └── pdf2txt
|                       ├── test1.txt
|                       ├── test2.txt
|                       └── pdf2txt
|                           ├── test1.txt
|                           ├── test2.txt
|                           └── pdf2txt

등등..

Windows와 Mac에서 왜 다르게 작동하는지 아시나요?

답변1

제 생각에는텔레콤의 답변스니핑의 주된 이유: 다른 심볼릭 링크일 뿐이고 심볼릭 링크가 포함될 수 있습니다.

내 실험에 따르면 요구 사항을 충족하는 일련의 상황이 있습니다.

  • Test_folder네, 심볼릭 링크 pdf2txt, 그리고
  • cpOP는 BSD 유산을 지닌 네이티브 macOS를 사용하고 있습니다 .

이러한 심볼릭 링크는 macOS cp의 루프 감지를 중단합니다. (GNU는 cp이미 설치되어 있습니다.스스로 만든또는 재귀적으로 복사하는 경우에도 기본적으로 심볼릭 링크를 따르지 않는 다른 패키지 관리자입니다. )

다음은 macOS High Sierra에서 테스트한 데모입니다.

$ ln -s pdf2txt Test_folder

$ ls -lAF Test_folder
lrwxr-xr-x 1 aho staff 7 Feb 13 20:13 Test_folder -> pdf2txt/

$ /bin/cp -r pdf2txt Test_folder
cp: Test_folder/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt: name too long (not copied)
cp: Test_folder/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt: name too long (not copied)

# Let's just look at the first 30 lines of a recursive ls
# (And yes, we're looking at pdf2txt)
$ ls -lRAF pdf2txt | head -n 30
pdf2txt:
total 0
drwxr-xr-x+ 5 aho staff 170 Feb 13 20:13 pdf2txt/
-rw-r--r--+ 1 aho staff   0 Feb 13 19:43 test1.txt
-rw-r--r--+ 1 aho staff   0 Feb 13 19:43 test2.txt

pdf2txt/pdf2txt:
total 0
drwxr-xr-x+ 3 aho staff 102 Feb 13 20:13 pdf2txt/
-rw-r--r--+ 1 aho staff   0 Feb 13 20:13 test1.txt
-rw-r--r--+ 1 aho staff   0 Feb 13 20:13 test2.txt

pdf2txt/pdf2txt/pdf2txt:
total 0
drwxr-xr-x+ 3 aho staff 102 Feb 13 20:13 pdf2txt/

pdf2txt/pdf2txt/pdf2txt/pdf2txt:
total 0
drwxr-xr-x+ 3 aho staff 102 Feb 13 20:13 pdf2txt/

pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt:
total 0
drwxr-xr-x+ 3 aho staff 102 Feb 13 20:13 pdf2txt/

pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt:
total 0
drwxr-xr-x+ 3 aho staff 102 Feb 13 20:13 pdf2txt/

pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt/pdf2txt:
total 0

답변2

/Volumes/Mac_Storage/pdf2txt/pdf2txt그것을 가리키는 심볼릭 링크가 있습니까 .?

실행해서 ls -l /Volumes/Mac_Storage/pdf2txt확인해 보세요.

다음과 같은 줄이 표시되는 경우:

lrwxrwxrwx 1 madmiddle madmiddle 1 Feb 12 12:34 pdf2txt -> .

...그러니까 그렇죠.

이러한 링크를 만드는 순서는 ln -s . pdf2txt오타로 인해 우연히 발생할 수 있다는 것입니다.

답변3

나는 정말 지루했고 내 MBP runnin mojave의 cp 매뉴얼 페이지에서 다음을 발견했습니다.

호환성 cp 유틸리티의 과거 버전에는 -r 옵션이 있었습니다. 이 구현은 이 옵션을 지원하지만 특수 파일, 기호 링크 또는 FIFO를 올바르게 복사하지 않으므로 사용하지 않는 것이 좋습니다.

예, macOS에서는 cp -r이 제대로 작동하지 않습니다.

관련 정보