DirectConnect

가이드

Mac과 Linux 간에 파일을 전송하는 방법

Mac과 Linux 간에 파일을 옮기려면 SSH를 통한 rsync로 복사하거나, Mac 폴더를 공유해 Linux 파일 관리자에서 열거나, Samba로 Linux 폴더를 공유하세요. 어느 방법이든 두 컴퓨터에서 설정이 필요하고, 파일 공유는 작은 파일이 많은 폴더에서 느립니다.

생각보다 어려운 이유

  • 공통 빠른 전송 기능이 없습니다. AirDrop은 Apple 전용이고, Linux 데스크탑에는 Mac이 이해하는 기능이 없습니다.
  • 모든 방법에 계정과 암호가 필요합니다. SSH와 Mac 파일 공유는 Mac 계정으로 로그인합니다. Samba에는 별도의 암호가 필요합니다.
  • Linux는 기본적으로 Mac과 폴더를 공유하지 않습니다. Samba를 설치하고 설정하고 방화벽을 열어야 합니다. Fedora 같은 배포판에서는 SELinux에서도 공유 폴더를 허용해야 합니다.
  • Samba에는 Mac용 설정이 필요합니다. Apple 호환 옵션이 없으면 Finder가 내 파일 옆에 숨겨진 ._ 파일을 추가로 남깁니다.
  • 케이블 연결에는 주소가 필요합니다. Mac은 케이블에서 169.254 주소를 스스로 정합니다. Linux는 있지도 않은 DHCP 서버를 기다리다가 IPv4 주소를 전혀 받지 못하는 경우가 많습니다.
  • 작은 파일은 기어가듯 느립니다. 테스트에서 Mac이 10 Gb/s Thunderbolt 연결로 Samba 공유에 작은 파일 20,000개(331 MB)를 복사하는 데 거의 4분이 걸렸습니다.
  • 드라이브가 호환되지 않습니다. Mac은 Linux의 ext4나 btrfs 드라이브에 쓸 수 없고, Linux는 Mac의 APFS 드라이브를 잘 다루지 못합니다. 양쪽 모두에서 잘 작동하는 것은 exFAT뿐입니다.
  • 케이블이 절반 속도로 작동할 수 있습니다. 테스트에서 Linux 노트북과 Mac이 40 Gb/s 케이블의 20 Gb/s 레인 하나로만 연결되었습니다.

케이블을 연결하고 각 컴퓨터의 주소 찾기

두 컴퓨터 모두 Thunderbolt 또는 USB4가 있다면, 둘 사이를 케이블로 연결해 직접 네트워크 연결을 만들 수 있습니다. Mac에서는 Thunderbolt 브리지라고 부르고, Linux에서는 thunderbolt0이라는 이름이 붙습니다. 이런 포트가 없다면 대신 가정용 네트워크와 그 주소를 사용하세요. Thunderbolt로 파일 전송하기를 참고하세요.

Mac에서

  1. 케이블을 연결합니다.
  2. 시스템 설정에서 네트워크, Thunderbolt 브리지를 차례로 선택합니다.
  3. 세부사항…을 클릭하고 IP 주소를 적어 둡니다. 케이블에 다른 장치가 없으면 169.254로 시작합니다.

Linux 컴퓨터에서

터미널에서 다음 명령을 실행합니다. 설정을 읽기만 합니다:

ip -4 addr show thunderbolt0

inet 169.254… 줄이 케이블의 주소입니다. inet 줄이 없다면 NetworkManager가 아직 DHCP를 기다리고 있는 것입니다. 케이블에 자체 할당 주소를 지정하세요:

  1. 설정에서 네트워크를 선택한 다음 케이블 유선 연결 옆의 설정 버튼을 클릭합니다.
  2. IPv4 탭에서 링크-로컬 전용을 선택하고 적용을 클릭합니다.
  3. 연결을 껐다가 다시 켠 다음 ip 명령을 다시 실행합니다.

컴퓨터 이름이 아니라 항상 169.254 주소로 연결하세요. 이름으로는 컴퓨터의 Wi-Fi 주소를 찾을 수 있고, 그러면 복사가 Wi-Fi로 진행됩니다.

방법 1: 터미널에서 SSH를 통한 rsync

rsync는 터미널에 익숙한 사람에게 알맞습니다. 폴더 전체를 복사하며, 복사가 멈춰도 다시 실행하면 이미 복사된 파일은 건너뜁니다. 모든 명령을 Linux 컴퓨터에서 실행하므로 Mac만 설정하면 됩니다.

Mac에서

  1. 시스템 설정에서 일반, 공유를 차례로 선택하고 원격 로그인을 켭니다.
  2. 원격 로그인 옆의 정보 버튼을 클릭하고 내 계정이 허용되어 있는지 확인합니다.
  3. 데스크탑, 문서, 다운로드에서 복사하려면 같은 패널에서 원격 사용자에 대한 전체 디스크 접근 권한 허용을 켭니다. 이 옵션이 없으면 macOS가 'Operation not permitted'와 함께 해당 폴더를 거부합니다.

Linux 컴퓨터에서

  1. 터미널에서 rsync -a --progress user@address:/Users/user/Projects/ ~/Projects/를 실행합니다. user는 Mac 계정의 짧은 이름(홈 폴더 이름)으로, address는 Mac의 169.254 주소로 바꿉니다.
  2. 처음에는 SSH가 Mac을 신뢰할지 묻습니다. yes를 입력합니다.
  3. Mac 계정의 암호를 입력합니다. rsync가 복사하는 파일을 하나씩 표시합니다.

반대 방향으로 복사하려면 두 경로를 바꿉니다. 끝의 /가 중요합니다. 붙이면 rsync가 폴더의 내용을, 붙이지 않으면 폴더 자체를 복사합니다. 공백이 있는 경로는 따옴표로 감싸세요. 탐색할 화면이 없으므로 시작하기 전에 정확한 경로를 알아야 합니다.

방법 2: Mac 폴더를 공유하고 Linux에서 열기

Mac 파일 공유는 Linux에 소프트웨어가 필요 없습니다. GNOME 파일과 대부분의 Linux 파일 관리자가 SMB 공유를 열 수 있습니다.

Mac에서

  1. 시스템 설정에서 일반, 공유를 차례로 선택하고 파일 공유를 켭니다.
  2. 파일 공유 옆의 정보 버튼을 클릭합니다. 공유 폴더 아래에서 +를 클릭하고 폴더를 선택합니다.
  3. Linux에서 파일을 복사해 넣어야 한다면 사용자 아래에서 내 계정을 읽기 및 쓰기로 설정합니다.
  4. 옵션…을 클릭하고 Windows 파일 공유 아래에서 계정을 선택한 다음 암호를 입력하고 완료를 클릭합니다. 이 단계를 거치지 않으면 Linux에서 로그인할 수 없습니다.

Linux 컴퓨터에서

  1. 파일에서 Ctrl+L을 누르고 smb://와 Mac의 주소를 입력한 다음(예: smb://169.254.20.30) Enter 키를 누릅니다.
  2. 등록된 사용자를 선택하고 Mac 계정의 짧은 이름과 암호를 입력한 다음 연결을 클릭합니다.
  3. 공유 폴더를 엽니다. 파일을 드래그해 넣거나 꺼냅니다.

이 방법으로 큰 파일은 잘 복사됩니다. 작은 파일이 많은 폴더는 느린데, 파일 공유가 파일을 하나씩 열고, 쓰고, 닫기 때문입니다.

방법 3: Samba로 Linux 폴더 공유하기

Finder에서 Linux 컴퓨터의 파일을 탐색하고 싶다면 Linux에서 공유하세요. 아래의 각 명령은 시스템을 변경하며 sudo용 암호가 필요합니다. you는 내 Linux 사용자 이름으로 바꿉니다.

Linux 컴퓨터에서

  1. Samba를 설치합니다. Fedora에서는 sudo dnf install samba, Ubuntu에서는 sudo apt install samba를 실행합니다.
  2. 아래와 같이 /etc/samba/smb.conf의 끝에 공유를 추가합니다. fruit 줄이 Apple 호환 옵션을 추가합니다.
  3. sudo smbpasswd -a you로 사용자의 Samba 암호를 설정합니다. 로그인 암호와는 별개입니다.
  4. 방화벽을 엽니다. Fedora에서는 sudo firewall-cmd --permanent --add-service=samba를 실행한 다음 sudo firewall-cmd --reload를 실행합니다. Ubuntu에서는 직접 켜지 않았다면 방화벽이 꺼져 있습니다. 켜져 있다면 sudo ufw allow samba를 실행합니다.
  5. Fedora에서는 SELinux가 폴더를 공유하도록 허용합니다: sudo semanage fcontext -a -t samba_share_t "/home/you/Projects(/.*)?"를 실행한 다음 sudo restorecon -R /home/you/Projects를 실행합니다.
  6. Samba를 시작합니다. Fedora에서는 sudo systemctl enable --now smb, Ubuntu에서는 sudo systemctl restart smbd를 실행합니다.
[Projects]
   path = /home/you/Projects
   valid users = you
   read only = no
   vfs objects = catia fruit streams_xattr

Mac에서

  1. Finder에서 이동 > 서버에 연결…을 선택합니다.
  2. smb://와 Linux 컴퓨터의 주소를 입력하고(예: smb://169.254.40.50) 연결을 클릭합니다.
  3. 등록된 사용자를 선택하고 Linux 사용자 이름과 Samba 암호를 입력한 다음 연결을 클릭합니다.
  4. Projects 공유를 선택합니다. Finder에서 열립니다.

10 Gb/s Thunderbolt 연결에서 테스트했을 때, Mac은 Samba 공유에서 작은 파일 20,000개(331 MB)를 114초 만에 복사해 왔고, 공유로는 238초 만에 복사했습니다. 4 GiB 파일은 양방향 모두 약 7.6 Gb/s로 복사되었습니다.

잠자기, 재시동, 케이블 분리 후에는

여기 나온 모든 방법은 케이블 연결이 살아 있는 동안에만 작동합니다. 어느 컴퓨터든 잠자기에 들어가거나 케이블을 뽑으면 연결이 끊깁니다.

  • rsync가 연결 오류로 멈춥니다. 같은 명령을 다시 실행하세요. 이미 도착한 파일은 건너뜁니다.
  • 공유 폴더 연결이 끊깁니다. Finder는 서버 연결이 중단되었다고 경고하고, 파일은 공유를 닫습니다. 다시 연결하고 로그인하세요.
  • 주소가 바뀔 수 있습니다. 자체 할당 주소는 케이블을 뽑은 후 바뀔 수 있으므로, 다시 연결하기 전에 다시 확인하세요.
  • 재시동 후에도 공유는 켜져 있습니다. 원격 로그인, 파일 공유, 활성화된 Samba 서비스는 저절로 다시 시작됩니다. 다른 컴퓨터에서는 여전히 다시 연결해야 합니다.

잠자기 후 네트워크 공유 연결이 끊기는 이유를 참고하세요.

방법 4: exFAT 드라이브

드라이브를 exFAT로 포맷하고 파일을 복사해 넣었다가 꺼냅니다. 어느 컴퓨터에서도 설정이 필요 없고 Thunderbolt나 USB4 없이도 작동하지만, 모든 파일을 두 번 복사하며 드라이브에 여유 공간이 충분해야 합니다.