Nextcloud 데이터 폴더를 외장 하드 드라이브로 안전하게 마이그레이션하는 방법

Nextcloud 데이터 폴더를 더 큰 외장 하드 드라이브로 옮기는 것은 간단한 복사 및 편집 작업처럼 보일 수 있지만, 실제로는 그렇지 않습니다. 중요한 점은 Nextcloud가 로컬 저장소를 디스크 상의 절대 경로로 식별한다는 것입니다. 이 경로가 실수로 변경되면 서버는 해당 파일을 다른 저장 위치로 인식하여 중복 파일이나 연결되지 않은 파일 레코드가 발생하거나, 메타데이터가 손상되거나, 공유 관계가 끊어질 수 있습니다.

기존 설치 환경에서 가장 안전하고 실용적인 방법은 Nextcloud가 동일한 데이터 디렉터리 경로를 인식하도록 유지 하면서 실제 데이터를 외부 디스크로 이동하는 것입니다. Nextcloud의 최신 관리 설명서에서는 디렉터리를 이동한 후 원래 경로에서 새 위치로 심볼릭 링크를 생성하는 것을 명시적으로 권장합니다. 또한, 직접 변경하는 것은 datadirectory데이터베이스 변경이 필요하며 지원되는 마이그레이션 방법이 아니라고 경고합니다. 자세한 내용은 Nextcloud 데이터 디렉터리 문제 해결 지침을 참조하십시오 .

시작하기 전에: 무엇이 검증되고, 무엇이 사용자 설정에 따라 달라지나요?

질문실질적인 답변
제가 그냥 수정해도 datadirectory될까요 config.php?단독으로는 안전하지 않습니다. Nextcloud 문서에 따르면 로컬 저장소의 절대 경로를 변경하면 데이터베이스 관계가 손상될 수 있습니다. 심볼릭 링크를 사용하여 원래 경로를 유지하는 것이 좋습니다.
전체 백업이 필요한가요?예. Nextcloud의 백업 문서에는 구성, 데이터 디렉터리, 데이터베이스 및 관련 사용자 지정 애플리케이션/테마 데이터가 포함되어 있습니다. 이전 디스크를 유일한 롤백 복사본으로 간주하지 마십시오.
외장 드라이브는 반드시 ext4 형식이어야 합니까?이 절차에서 특정 파일 시스템을 사용하도록 강제하는 것은 아닙니다. 아래 예제에서는 일반적인 Linux 소유권 및 권한 동작이 간단한 ext4를 사용합니다. 다른 파일 시스템의 경우 마운트 옵션이 다를 수 있습니다.
그 후에 뛰어야 할까요 files:scan --all?일반적으로 경로 유지 이동에는 사용하지 마십시오. 파일이 파일 캐시에서 실제로 누락되었거나 파일이 Nextcloud 외부의 데이터 트리에 복사되어 즉시 다시 스캔해야 하는 경우에 사용하십시오.
USB 외장 하드 드라이브는 내장 하드 드라이브만큼 신뢰할 수 있을까요?이는 외장 케이스, 케이블, 전원, 파일 시스템 및 호스트에 따라 다릅니다. 이동식 드라이브를 사용할 수 없게 되면 서비스 가용성에 위험이 발생할 수 있으므로, 마운트를 영구적으로 유지하고 Nextcloud를 시작하기 전에 확인해야 합니다.

1. 외장 드라이브를 안정적인 경로에 장착하십시오.

먼저 장치와 파일 시스템을 식별하십시오. Linux에서는 `fstab`이나 `fstab`과 같은 명령어를 사용 lsblk -f하면 blkid파일 시스템의 UUID를 확인할 수 있습니다. `fstab`과 같은 장치 이름을 기반으로 영구적인 구성을 만드는 것은 피하십시오 /dev/sdb1. Linux 장치 이름은 하드웨어가 추가되거나 감지 순서가 변경될 때 바뀔 수 있습니다. Linux ` fstab` 설명서에서는 영구 마운트에 UUID 또는 LABEL 식별자를 사용할 것을 권장합니다.

lsblk -f
sudo blkid /dev/sdb1
sudo mkdir -p /mnt/nextcloud-data-storage

. 에 적절한 항목을 추가하세요 /etc/fstab. 예시 UUID와 파일 시스템 유형을 디스크의 값으로 바꾸세요.

UUID=YOUR-FILESYSTEM-UUID  /mnt/nextcloud-data-storage  ext4  defaults  0  2

Nextcloud를 사용하기 전에 마운트 상태를 테스트하십시오.

sudo mount -a
findmnt /mnt/nextcloud-data-storage
df -h /mnt/nextcloud-data-storage
Linux 터미널에서 외부 Nextcloud 드라이브에 대한 lsblk, blkid, fstab UUID 항목, mount -a 및 findmnt 명령어를 보여줍니다.

Nextcloud 파일을 이동하기 전에 UUID로 외부 디스크를 확인하고 마운트 지점을 확인하십시오.

흔히 잘못 알려진 사실: 디렉터리 이름이 있다고 해서 /mnt/nextcloud-data-storage디스크가 해당 위치에 마운트되었다는 것을 의미하지는 않습니다. 드라이브가 없더라도 마운트 지점 디렉터리는 시스템 디스크에 존재할 수 있습니다. 해결 방법:findmnt 마이그레이션을 테스트할 때마다 그리고 재부팅 후에도 또는 명령어 를 사용하십시오 mountpoint.

2. Nextcloud 백업 및 쓰기 중지

Nextcloud의 최신 백업 가이드에 따르면 복구 가능한 백업에는 데이터 디렉터리, 구성, 데이터베이스 및 사용자 지정 앱과 테마와 같은 배포별 콘텐츠가 포함됩니다. Nextcloud 공식 백업 문서를 검토하고 백업이 파티션을 변경하거나 용도를 변경할 드라이브가 아닌 다른 위치에 저장되었는지 확인하십시오.

다음으로, Nextcloud 설치 디렉토리에서 유지 관리 모드를 활성화하십시오. Debian 및 Ubuntu에서 웹 서버 계정은 일반적으로 다음과 같습니다 www-data.

cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --on

마이그레이션 지침에는 이동 중에는 cron 작업이 실행되지 않아야 하며, 데이터 이전이 진행되는 동안 웹/애플리케이션 서버를 중지할 것을 권장합니다. 서버 중지 방법은 배포 환경에 따라 다릅니다. Apache, Nginx + PHP-FPM, Docker Compose, Snap, AIO, Kubernetes는 모두 서비스 경계가 서로 다릅니다.

조치: Nextcloud cron 항목을 비활성화하거나 관련 cron 서비스를 중지한 다음, 최종 복사 전에 웹/앱 서비스를 중지하십시오. 데이터 세트가 매우 큰 경우, 사이트가 온라인 상태인 동안 외부 디스크에 미리 데이터를 저장한 다음 유지 관리 모드로 전환하고, 기록 프로세스를 중지한 후 최종 rsync복사를 실행하여 변경 사항을 캡처할 수 있습니다.

3. 숨겨진 파일을 포함하여 전체 데이터 디렉터리를 복사합니다.

사용자 폴더만 복사하지 마십시오. 데이터 디렉터리에는 .ncdata저장소에 속하는 애플리케이션 데이터와 같은 숨겨진 파일도 포함되어 있습니다. Nextcloud는 이동 절차에서 숨겨진 파일/점 파일(dot file)을 명시적으로 지정합니다.

현재 디렉터리가 /var/www/nextcloud/data이고 외부 디스크가 에 마운트되어 있다고 가정합니다 /mnt/nextcloud-data-storage. 대상 디렉터리를 생성하고 해당 디렉터리를 복사합니다.

sudo mkdir -p /mnt/nextcloud-data-storage/data
sudo rsync -Aax --info=progress2   /var/www/nextcloud/data/   /mnt/nextcloud-data-storage/data/

Nextcloud 복원 문서에서는 rsync -Aax디렉터리 트리와 메타데이터를 보존하는 예시를 보여줍니다. 매우 큰 규모의 설치 환경의 경우, 모든 쓰기 프로세스를 중지한 후 두 번째 복원 작업을 실행하고 결과를 확인하십시오. 소스 환경에서 ACL, 확장 속성, 특수한 파일 시스템 또는 컨테이너에 마운트된 스토리지를 사용하는 경우 필요한 정확한 옵션이 달라질 수 있습니다.

Nextcloud 유지 관리 모드, cron 중지, rsync를 사용하여 .ncdata를 포함한 전체 데이터 디렉터리를 외장 드라이브로 복사하는 중을 보여주는 터미널 화면입니다.

백그라운드 쓰기를 중지하고 숨겨진 Nextcloud 메타데이터 파일을 포함하여 전체 데이터 트리를 복사합니다.

흔히 잘못 알고 있는 사실: 복사본 생성이 완료되면 마이그레이션이 끝난 것입니다. 그렇지 않습니다. Nextcloud는 여전히 예상 경로를 필요로 하며, HTTP 사용자가 새 위치로 이동하여 파일에 쓸 수 있어야 합니다. 조치 사항: 경로를 변경하기 전에 파일 개수 또는 샘플 체크섬을 확인하고, 새 저장소가 테스트를 통과할 때까지 원본 디렉터리를 그대로 유지하십시오.

4. 심볼릭 링크를 사용하여 원래 데이터 경로를 보존합니다.

이것이 핵심적인 안전 조치입니다. Nextcloud가 현재 다음과 같은 방식을 사용한다고 가정해 보겠습니다.

'datadirectory' => '/var/www/nextcloud/data',

권장 경로 유지 마이그레이션의 경우 해당 값을 변경하지 마십시오. 대신 이전 디렉터리를 롤백 복사본으로 유지하고 외부 드라이브를 가리키는 심볼릭 링크로 대체하십시오.

sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.old
sudo ln -s /mnt/nextcloud-data-storage/data /var/www/nextcloud/data
ls -ld /var/www/nextcloud/data

Nextcloud는 로컬 저장소가 절대 경로로 식별되기 때문에 이러한 심볼릭 링크 방식을 문서화합니다. 링크가 설정되면 /var/www/nextcloud/data데이터가 외장 디스크에 있더라도 Nextcloud는 해당 저장소를 계속 인식합니다.

광범위한 권한 변경을 하기 전에 소유권을 확인하십시오.

stat -c '%U:%G %a %n' /var/www/nextcloud/data.old
stat -c '%U:%G %a %n' /mnt/nextcloud-data-storage/data
namei -l /mnt/nextcloud-data-storage/data

HTTP 사용자는 상위 디렉터리를 탐색하고 데이터 디렉터리에 읽기/쓰기 권한이 있어야 합니다. 올바른 소유자는 배포판 및 설치 방법에 따라 다릅니다. Nextcloud의 occ 문서 에 따르면 HTTP 계정은 www-dataDebian/Ubuntu에서는 일반적으로, apacheFedora/CentOS에서는 동일하며, 다른 시스템에서는 다릅니다.

소유권 확인 및 원래 Nextcloud 데이터 경로에서 외부 드라이브로 연결되는 심볼릭 링크를 보여주는 터미널 화면입니다.

원래 데이터 디렉터리 경로를 유지하고 심볼릭 링크를 사용하여 외부 디스크를 가리키도록 설정하십시오.

흔히 잘못 알려진 사실: 일반적인 명령어를 재귀적으로 실행하면 chmod 777권한 문제가 해결된다고 생각하는 것. 하지만 이는 실제 문제를 숨기고 보안을 약화시킬 수 있습니다. 올바른 해결 방법: 새 디렉터리의 소유권 및 권한을 원래 디렉터리와 비교하고, ACL(접근 제어 목록)을 유지하며, HTTP 사용자에게 필요한 최소한의 수정만 수행해야 합니다.

정말로 변화를 원한다면 어떻게 해야 할까요 datadirectory?

Nextcloud는 심볼릭 링크를 사용하지 않는 절차를 설명하지만, 동일한 문서에서 해당 절차가 지원되지 않으며 데이터베이스가 손상될 수 있다고 경고합니다. 이 절차를 사용하려면 테이블 에서 config.php해당 항목을 변경하고 업데이트 해야 합니다 .local::/old-data-dir/oc_storages

이는 단순히 동일한 작업을 위한 다른 구문이 아니라, Nextcloud가 내부적으로 기록하는 저장소 식별자를 변경하는 것입니다. 조치: 검증된 백업, 검증된 복원 프로세스, 그리고 이전 경로명을 제거해야 하는 특정한 운영상의 이유가 없는 한, 심볼릭 링크 방식을 사용하십시오. 새로운 Nextcloud 설치의 경우, 설치 중에 최종 데이터 위치를 선택하십시오. Nextcloud는 나중에 이동하는 것보다 이 방법이 더 쉽다고 명시적으로 안내하고 있습니다.

5. Nextcloud를 재시작하고, 마운트 상태를 확인한 후, 다시 온라인 상태로 전환합니다.

Nextcloud를 시작하기 전에 외부 파일 시스템이 실제로 마운트되었는지, 그리고 심볼릭 링크가 해당 파일로 제대로 연결되는지 확인하십시오.

findmnt /mnt/nextcloud-data-storage
readlink -f /var/www/nextcloud/data
sudo -E -u www-data test -r /var/www/nextcloud/data/.ncdata && echo readable

웹/애플리케이션 서비스를 재시작하고 배포 환경에 맞는 방법으로 Nextcloud cron 작업을 다시 활성화하십시오. 그런 다음 유지 관리 모드를 해제하고 서버 상태를 확인하십시오.

cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --off
sudo -E -u www-data php occ status

로그인 후 여러 작업을 테스트해 보세요. 기존 파일을 열고, 새 파일을 업로드하고, 파일 이름을 바꾸고, 삭제하고, 휴지통에서 복원한 다음, 다른 클라이언트에서 동기화가 가능한지 확인합니다. 호스트를 한 번 재부팅한 후 이 과정을 반복하세요 findmnt. 이렇게 하면 시스템 장애 발생 시 예상치 못한 문제가 생기기 전에 잘못된 /etc/fstab항목을 발견할 수 있습니다.

Nextcloud 상태 및 외부 파일 시스템 마운트와 Nextcloud 파일 인터페이스를 확인하는 터미널 화면입니다.

전환 후 Nextcloud에서 운영 체제 마운트와 정상적인 파일 작업이 모두 정상적으로 작동하는지 확인하십시오.

필요하신가요 occ files:scan --all?

자동으로 업데이트되지는 않습니다. Nextcloud의 파일 명령 설명서에 따르면 files:scan파일 캐시는 새 파일이나 변경된 파일에 대해 업데이트되며, 수동 복사 후 또는 캐시 불일치를 조사할 때 유용할 수 있습니다. 경로를 유지하는 이동을 올바르게 실행하면 동일한 파일과 동일한 논리적 로컬 저장소 경로를 유지해야 하므로 전체 검사를 "만약을 대비한" 기본 단계로 사용해서는 안 됩니다.

조치: 먼저 사용자 인터페이스를 테스트하고 예상 파일과 비교하십시오. 디스크에는 파일이 있지만 Nextcloud에서 누락된 경우, 대상 검사를 수행하거나 필요한 경우 전체 검사를 수행하십시오 files:scan --all. 대규모 설치 환경에서는 전체 검사에 상당한 시간이 소요될 수 있습니다.

최종 마이그레이션 체크리스트

  • 현재 데이터베이스, 구성 및 데이터 백업은 마이그레이션 대상 디스크 외부에 존재합니다.
  • 외부 파일 시스템은 UUID 또는 LABEL로 구성된 안정적인 마운트를 가지고 있습니다.
  • findmnt외장 드라이브가 실제로 마운트되었는지 확인합니다.
  • 최종 동기화가 진행되는 동안 Nextcloud 쓰기 작업과 cron 작업이 중지됩니다.
  • 를 포함한 전체 데이터 디렉토리가 .ncdata복사되었습니다.
  • datadirectory심볼릭 링크를 사용하면 원래 경로명이 유지됩니다.
  • HTTP 사용자는 마운트 경로를 따라 이동하여 데이터를 읽고 쓸 수 있습니다.
  • Nextcloud는 스토리지 오류 없이 시작되며 occ status정상적으로 작동합니다.
  • 업로드, 이름 변경, 삭제, 복원, 다운로드 및 동기화 테스트가 모두 성공했습니다.
  • 서버를 한 번 재부팅하여 외장 드라이브가 시작 시 안정적으로 마운트되는지 확인했습니다.
  • 새로운 설정이 테스트되고 별도로 백업될 때까지 기존 데이터 디렉터리는 삭제되지 않습니다.

가장 중요한 핵심은 간단합니다. Nextcloud 데이터 마이그레이션은 단순히 파일 시스템을 복사하는 것만이 아닙니다. 경로는 Nextcloud 로컬 스토리지의 고유한 식별자입니다. 가능하면 해당 경로를 보존하고, 외장 드라이브를 안정적인 시스템 마운트로 설정하고, 최종 복사 중에는 쓰기 작업을 중지하고, 새 스토리지가 애플리케이션 테스트와 재부팅을 모두 통과할 때까지 롤백 복사본을 유지해야 합니다.

댓글 남기기

Matrix Coturn TURN/STUN 서버를 설정하여 음성 및 영상 통화를 가능하게 하는 방법

Matrix Coturn TURN/STUN 서버를 설정하여 음성 및 영상 통화를 가능하게 하는 방법

Synapse를 사용하여 Matrix WebRTC 통화를 위한 Coturn 설정을 구성합니다. 공유 자격 증명, NAT, 방화벽 포트, TLS 옵션을 구성하고 기존 TURN과 MatrixRTC 및 LiveKit을 구분합니다.

OAuth2 인증을 사용하여 Nextcloud 메일 앱을 구성하는 방법

OAuth2 인증을 사용하여 Nextcloud 메일 앱을 구성하는 방법

Nextcloud 메일을 Gmail 또는 Microsoft 365용 OAuth2로 구성하고, IMAP/SMTP 액세스를 확인하고, 리디렉션 문제를 해결하고, 제한 사항을 파악하세요.

Element에서 "신원 확인 불가" 세션 경고를 해결하는 방법

Element에서 "신원 확인 불가" 세션 경고를 해결하는 방법

Element의 "ID 확인 불가" 세션 경고를 해결하려면 다른 신뢰할 수 있는 장치 또는 복구 키를 사용하여 인증하고, 재설정이 안전한 시점을 알아보세요.

Kopano 사서함을 Grommunio 또는 Zammad로 이전하기: 올바른 방법을 선택하세요

Kopano 사서함을 Grommunio 또는 Zammad로 이전하기: 올바른 방법을 선택하세요

Kopano 마이그레이션과 grommunio 및 Zammad 마이그레이션을 비교해 보세요. 각 마이그레이션 경로에서 보존할 수 있는 사서함 데이터, 테스트 및 결과 검증 방법, 그리고 IMAP 또는 사용자 지정 가져오기가 적합한 경우를 알아보세요.

Nextcloud 데이터 폴더를 외장 하드 드라이브로 안전하게 마이그레이션하는 방법

Nextcloud 데이터 폴더를 외장 하드 드라이브로 안전하게 마이그레이션하는 방법

Nextcloud 데이터 디렉토리를 파일 참조를 손상시키지 않고 외장 하드 드라이브로 이동하는 방법입니다. 백업, 영구 마운트, rsync, 권한 설정 및 심볼릭 링크를 안전하게 활용하세요.

systemd를 사용하여 Nextcloud cron 작업이 자동으로 실행되지 않는 문제를 해결하세요

systemd를 사용하여 Nextcloud cron 작업이 자동으로 실행되지 않는 문제를 해결하세요

Ubuntu에서 Nextcloud systemd cron 타이머 문제를 해결하려면 서비스 사용자, PHP 및 Nextcloud 경로, 타이머 활성화 여부, 작업 실행 기록을 확인하십시오.

BigBlueButton에서 Etherpad 연동을 설정하는 방법

BigBlueButton에서 Etherpad 연동을 설정하는 방법

BigBlueButton 4.0 beta.4 또는 이전 버전에서 Etherpad 공유 메모를 활성화하세요. 선택적 패키지를 설치하고, 회의 수준 또는 전체 기본값을 선택하고, 프록시 문제를 해결하세요.

Nextcloud 업로드 용량 제한(2GB) 해결 방법: 대용량 파일 업로드 허용

Nextcloud 업로드 용량 제한(2GB) 해결 방법: 대용량 파일 업로드 허용

PHP, Nginx 또는 Apache, 리버스 프록시, 타임아웃 및 스토리지 설정을 확인하여 Nextcloud 업로드 용량 제한(2GB)을 해결하세요. 기존 제한 용량보다 큰 파일을 사용하여 변경 사항을 안전하게 테스트할 수 있습니다.

Let's Encrypt를 사용하여 ownCloud 서버에 SSL/HTTPS를 설정하는 방법

Let's Encrypt를 사용하여 ownCloud 서버에 SSL/HTTPS를 설정하는 방법

Apache에서 실행되는 ownCloud 서버에 Let's Encrypt HTTPS를 설정합니다. DNS 및 포트를 확인하고, Certbot을 사용하여 인증서를 발급하고, 리디렉션을 활성화하고, 갱신을 테스트합니다.

버전 업그레이드 후 ownCloud "무결성 검사 실패" 오류 해결 방법

버전 업그레이드 후 ownCloud "무결성 검사 실패" 오류 해결 방법

업그레이드 후 ownCloud 무결성 경고를 진단하고 코어 파일 불일치, 파일 누락, 추가 파일 또는 앱 서명 오류에 대한 안전한 해결 방법을 선택하세요.