티스토리 뷰

TIL

[TIL] 2022 / 08 / 25

희철 2022. 8. 26. 03:05

백업과 복구

 

 

 

주로 세 가지 방법으로 구현

 

1. 자체 서버

2. 서드 파티(구글 드라이브 등)

3. 파일 앱 이용

 

 

파일 앱을 이용하는 방법으로 백업과 복구를 구현해봄.

 

 

백업

 

 

1. 백업할 파일들의 경로를 담을 배열 생성.

 

2. Document폴더에 압축 파일을 만듦.

 

도큐먼트 폴더의 경로를 가져와 realm파일의 경로를 구함.

-> Document폴더 내에 default.realm이라는 이름으로 파일이 있으므로 경로는 도큐먼트 폴더 경로에 realm의 이름인 default.realm만 붙이면됨.

 

 

3. 위에서 구한 realm파일이 폴더 내에 있는지 확인하고 있다면 배열에 추가

 

이미 realm파일이 default.realm으로 저장된다는 것을 알기에 2번에서 저렇게 작성한 것임.

 

2번에서 구한 것은 경로일뿐, 실제로 파일이 있는 것을 말해주는 것이 아님.

-> 만약 파일이 있다면 저 경로를 갖게 된다는 의미.

 

그래서 파일이 있는지없는지를 확인해야함.

 

 

4. 파일을 압축하고 액티비티 뷰컨트롤러를 띄움.

 

Zip이라는 라이브러리를 사용함.

 

url배열을 매개변수로 받기 때문에 urlPath를 매개변수로 넣어주고, 압축 파일의 이름을 정함.

 

성공했을 경우에만 액티비티 뷰컨트롤러를 띄움.

 

 

5. 액티비티 뷰컨트롤러에서 파일에 저장해줌.

 

액티비티 뷰컨트롤러를 띄울때 아이템을 정해줘야함.

 

이 경우에선 백업 파일을 activityItems에 줘야함.

 

마찬가지로 이름을 정했으므로 정한 이름을 가진 압축 파일의 경로를 구해줌.

 

액티비티 뷰컨트롤러가 떴을때 파일앱에 저장을 눌러주면됨.

 

액티비티 뷰컨트롤러에 뜨는 다양한 옵션(파일앱 저장, 카카오톡으로 전송 등)에 대해서는 설정할 수 없음.

 

 

 

복구

 

 

1. UIDocumentPickerViewController를 띄워줌.

 

압축 파일 하나만 고를 것이므로 allowsMultipleSelection은 false

 

프로토콜내에서 코드를 작성할 것이기때문에 대리자도 설정해야함.

 

 

2. 프로토콜 채택

 

 

3. didPickDocumentsAt 메서드 구현

 

두 가지로 나눠서 생각해야함.

 

파일 앱에서 압축 파일을 선택했을때 이미 도큐먼트 폴더 내에 압축 파일이 있는 경우

 

path는 위에서 계속 구했던 도큐먼트 폴더의 경로, selectedFileURL은 선택한 압축 파일의 경로임.

하나만 선택하므로 urls에는 하나만 있기때문에 first로 접근.

 

이때, fileURL과 처음에 구한 selectedFileURL의 경로는 같을 것임.

 

 

도큐먼트 폴더 내에 압축 파일이 없는 경우

 

이 경우엔 파일앱에서 선택한 파일을 도큐먼트 폴더에 복사한 뒤에 압축을 해제해주면됨.

 

복구를 하고 나서 앱을 재시작해야 적용됨.

 

localRealm 변수를 선언할때 인스턴스를 생성하게 되는데 복구할때와 서로 다른 인스턴스일거임.

 

다른 인스턴스이기 때문에 다른 메모리 구조를 갖게 되어서 그러는듯

-> 아직 잘 모르겠음. 그리고 앱을 다시 시작해보도록 해야하는데 다마고치때 사용했던 코드는 적용이 안됨.

 

 

 

 

다이어리 앱에서는 이미지를 따로 저장해서 압축파일에는 이미지가 포함이 안됨.

 

따로 압축하는 과정도 해봐야할듯.

 

도큐먼트 폴더 내에 폴더 만드는 것도 해봐야함.

 

'TIL' 카테고리의 다른 글

[TIL] 2022 / 08 / 29  (0) 2022.08.29
[TIL] 2022 / 08 / 27  (0) 2022.08.28
[TIL] 2022 / 08 / 24  (0) 2022.08.25
[TIL] 2022 / 08 / 23  (0) 2022.08.24
[TIL] 2022 / 08 / 22  (0) 2022.08.23
댓글
최근에 올라온 글
Total
Today
Yesterday