<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>냉정과 열정 사이</title>
    <link>https://psychoria.tistory.com/</link>
    <description>프로그램 개발과 테크 집약 블로그</description>
    <language>ko</language>
    <pubDate>Mon, 29 Sep 2025 13:50:37 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>psychoria</managingEditor>
    <image>
      <title>냉정과 열정 사이</title>
      <url>https://t1.daumcdn.net/cfile/tistory/2614073E549D6EE004</url>
      <link>https://psychoria.tistory.com</link>
    </image>
    <item>
      <title>[자작NAS] 우분투 서버에 Docker로 CrowdSec 설치</title>
      <link>https://psychoria.tistory.com/792</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CrowdSec은 침입 방지 시스템으로 외부의 침입 시도로부터 서버를 보호합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Fail2ban과 유사한 역할을 하지만 동작 방식은 조금 다릅니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Fail2ban은 각 서비스의 로그들을 스캔해서 실패한 로그인 등에 대한 로그를 기반으로 IP를 차단합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_Architecture.png&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;561&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bewXkz/btsohAX9t1r/NSgPp1B5Va4yAI5MLdUEL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bewXkz/btsohAX9t1r/NSgPp1B5Va4yAI5MLdUEL0/img.png&quot; data-alt=&quot;CrowdSec 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bewXkz/btsohAX9t1r/NSgPp1B5Va4yAI5MLdUEL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbewXkz%2FbtsohAX9t1r%2FNSgPp1B5Va4yAI5MLdUEL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;731&quot; height=&quot;561&quot; data-filename=&quot;1_Architecture.png&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;561&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CrowdSec 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CrowdSec는 CrowdSec을 설치한 사람들의 로그를 분석해서 각 사용자로부터 수집한 악성 IP들을 차단합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여러 사용자들이 공유하는 정보를 기반으로 IP를 차단하기 때문에 더 많은 정보를 활용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한, CrowdSec은 Traefik이나 Cloudflare 등과 같은 서비스와 연동하기 위한 바운서(Bouncers)를 제공합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CrowdSec을 적용해서 서버의 보안을 강화시키는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. CrowdSec 설정&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CrowdSec 설치는 아래 링크를 참조해서 작성되었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.smarthomebeginner.com/crowdsec-docker-compose-1-fw-bouncer/&quot;&gt;Crowdsec Docker Compose Guide Part 1: Powerful IPS with Firewall Bouncer | SHB (smarthomebeginner.com)&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 다음 링크를 참조해서 Traefik을 설치합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://psychoria.tistory.com/791&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.07.20 - [IT/NAS] - [자작NAS] 우분투 서버에 Docker로 Traefik 설치&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Traefik이 정상적으로 동작하면 CrowdSec과 Traefik을 위한 바운서를 실행할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Traefik이 이미 설정된 docker-compose.yml 파일에 다음 내용을 추가로 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;whoami가 있던 부분을 삭제하고 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689828828312&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  crowdsec:
    image: crowdsecurity/crowdsec
    container_name: crowdsec
    env_file: .env
    environment:
      - COLLECTIONS=${CROWDSEC_COLLECTIONS}
      - GID=${PGID}
    depends_on:
      traefik:
        condition: service_healthy
    volumes:
      - ${CROWDSEC_PATH}/data:/var/lib/crowdsec/data
      - ${CROWDSEC_PATH}/config:/etc/crowdsec
      - ${TRAEFIK_PATH}/logs:/logs/traefik:ro
      - /var/log:/var/log:ro
    networks:
      - web
    restart: always

  traefik-bouncer:
    image: fbonalair/traefik-crowdsec-bouncer
    container_name: traefik-bouncer
    env_file: .env
    environment:
      - GIN_MODE=release
      - CROWDSEC_BOUNCER_API_KEY=${CROWDSEC_KEY_TRAEFIK} # cscli bouncers add traefik-bouncer
      - CROWDSEC_BOUNCER_LOG_LEVEL=2
      - CROWDSEC_AGENT_HOST=crowdsec:8080
    networks:
      - web
    restart: always&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 필요한 환경변수를 추가해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기존에 Traefik을 위해 추가한 내용에 아래 내용을 추가로 더해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689829077021&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Common
PGID=1000

# CrowdSec
CROWDSEC_KEY_TRAEFIK=키입력
CROWDSEC_PATH=/data/crowdsec
CROWDSEC_COLLECTIONS=crowdsecurity/base-http-scenarios crowdsecurity/http-cve crowdsecurity/iptables crowdsecurity/linux crowdsecurity/nginx crowdsecurity/sshd crowdsecurity/traefik Dominic-Wagner/vaultwarden LePresidente/grafana&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;.env 파일의 &lt;b&gt;키입력&lt;/b&gt; 부분은 crowdsec을 실행한 후에 생성할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 crowdsec을 먼저 실행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689829321131&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose up -d crowdsec&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;crowdsec이 실행되면 다음 명령어로 설정한 컬렉션들이 정상적으로 표시되는지 확인합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689829602367&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose exec -t crowdsec cscli collections list&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같은 형태로 활성화되어 있는 것을 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2_Collections.png&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;317&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rvjUK/btsohoEfgYt/5GNnzGRC4MoqIM71IZ0o0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rvjUK/btsohoEfgYt/5GNnzGRC4MoqIM71IZ0o0K/img.png&quot; data-alt=&quot;Collections&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rvjUK/btsohoEfgYt/5GNnzGRC4MoqIM71IZ0o0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrvjUK%2FbtsohoEfgYt%2F5GNnzGRC4MoqIM71IZ0o0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1016&quot; height=&quot;317&quot; data-filename=&quot;2_Collections.png&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;317&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Collections&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일단 CrowdSec이 실행이 완료되면 추가적인 설정들을 진행해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 로그 설정&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 acquis.yaml 파일을 수정해서 Traefik 로그를 읽도록 해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689834426805&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /data/crowdsec/config/acquis.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같이 내용을 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689834530471&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;filenames:
  - /var/log/nginx/*.log
  - ./tests/nginx/nginx.log
#this is not a syslog log, indicate which kind of logs it is
labels:
  type: nginx
---
filenames:
  - /var/log/auth.log
  - /var/log/syslog
  - /var/log/kern.log
labels:
  type: syslog
---
filename: /var/log/apache2/*.log
labels:
  type: apache2
---
filenames:
  - /logs/traefik/*.log
labels:
  type: traefik&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Nginx나 Apache 서버가 없다면 해당 부분(type: nginx, type: apache2)은 삭제해도 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정이 완료되면 CrowdSec을 재시작합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689834590127&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose restart crowdsec&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 명령어로 추가된 로그 파일들을 읽고 있는지 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689835823055&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose exec -t crowdsec cscli metrics&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;시간이 지나고 로그 파일들을 파싱하고 나면 다음과 같이 결과가 나옵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;7_Metrics.png&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/46pgF/btsoiZdsI34/kPO0Eh9ZRD2F9I1TRiy8r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/46pgF/btsoiZdsI34/kPO0Eh9ZRD2F9I1TRiy8r0/img.png&quot; data-alt=&quot;Metrics&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/46pgF/btsoiZdsI34/kPO0Eh9ZRD2F9I1TRiy8r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F46pgF%2FbtsoiZdsI34%2FkPO0Eh9ZRD2F9I1TRiy8r0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;943&quot; height=&quot;184&quot; data-filename=&quot;7_Metrics.png&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Metrics&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파일을 읽기 전까지 일부 파일이 표시되지 않을 수도 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. 화이트 리스트 작성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 명령어를 실행해서 접속을 허용할 목록을 추가해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689836709802&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /data/crowdsec/config/parsers/s02-enrich/mywhitelists.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같이 입력해 주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689836870334&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name: crowdsecurity/whitelists
description: &quot;Whitelist events from my ip addresses&quot;
whitelist:
  reason: &quot;my ip ranges&quot;
  ip:
    - &quot;xxx.xxx.xxx.xxx&quot;
    - &quot;127.0.0.1&quot;
  cidr:
    - &quot;192.168.0.0/16&quot;
    - &quot;10.0.0.0/8&quot;
    - &quot;172.16.0.0/12&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;xxx.xxx.xxx.xxx 부분은 본인의 실제 외부 IP로 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;IP가 자주 변동되는 유동 IP라면 생략해도 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 컨테이너를 재시작해서 적용하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689837018774&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose restart crowdsec&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 화이트 리스트 설정이 완료됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;4. MariaDB 연동하기 (생략 가능)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CrowdSec은 기본적으로 SQLite를 기본 DB로 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;데이터가 많아지면 SQLite가 느릴 수 있기 때문에 별도의 DBMS에 연결해서 사용하는 것이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본 SQLite를 계속 사용하려는 경우 이 단계는 건너뛰어도 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 MariaDB(MySQL)을 연동하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MariaDB를 Docker Compose로 실행하는 방법은 아래 링크에서 확인 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://psychoria.tistory.com/793&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;2023.07.24 - [IT/NAS] - [자작NAS] 우분투 서버에 Docker로 MariaDB 설치&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 명령어로 MariaDB 컨테이너 접속합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689986008916&quot; class=&quot;armasm&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose exec -it mariadb mariadb -u root -p&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;root 계정의 비밀번호를 입력하고 접속한 후 다음 명령어들을 순차적으로 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689986008916&quot; class=&quot;sql&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE DATABASE crowdsec;
CREATE USER 'crowdsec'@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON crowdsec.* TO 'crowdsec'@'%';
FLUSH PRIVILEGES;
quit&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비밀번호 부분은 원하는 비밀번호로 변경하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 CrowdSec의 config.yaml 파일을 수정해 주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689986008917&quot; class=&quot;arduino&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /data/crowdsec/config/config.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;db_config 부분을 찾아서 다음과 같이 MariaDB를 사용하도록 변경해 주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689986008917&quot; class=&quot;yaml&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;db_config:
  log_level: info
  type: mysql
  user: crowdsec
  password: 비밀번호
  db_name: crowdsec
  host: mariadb
  port: 3306
  flush:
    max_items: 5000
    max_age: 7d&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 docker-compose.yml 파일의 CrowdSec 부분도 일부 변경합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 하단의 networks: 부분에 crowdsec이라는 네트워크를 새롭게 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690058301310&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  crowdsec:
    image: crowdsecurity/crowdsec
    container_name: crowdsec
    env_file: .env
    environment:
      - COLLECTIONS=${CROWDSEC_COLLECTIONS}
      - GID=${PGID}
    depends_on:
      traefik:
        condition: service_healthy
      mariadb:
        condition: service_healthy
    volumes:
      - ${CROWDSEC_PATH}/data:/var/lib/crowdsec/data
      - ${CROWDSEC_PATH}/config:/etc/crowdsec
      - ${TRAEFIK_PATH}/logs:/logs/traefik:ro
      - /var/log:/var/log:ro
    networks:
      - crowdsec
      - web
    restart: always

...

networks:
  web:
    name: web
  crowdsec:
    name: crowdsec&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;생성한 crowdsec 네트워크는 MariaDB 컨테이너의 networks: 에도 추가해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;변경 완료 후 MariaDB와 CrowdSec 서비스를 재시작해서 적용해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689986008918&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose restart mariadb
sudo docker compose restart crowdsec&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 SQLite 대신 MariaDB를 사용해서 데이터를 보관합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;SQLite를 계속 사용하려는 경우는 이 단계는 건너뛰면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;5. CrowdSec 가입&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 아래 링크로 접속해서 CrowdSec에 가입합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://app.crowdsec.net/&quot;&gt;https://app.crowdsec.net/&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;화면의 Sign up 버튼을 누르고 가입을 하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3_Signup.png&quot; data-origin-width=&quot;425&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKKsAY/btsonxT9W5s/v7HkVfU1HKnIjOGkniAwb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKKsAY/btsonxT9W5s/v7HkVfU1HKnIjOGkniAwb1/img.png&quot; data-alt=&quot;Sign up&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKKsAY/btsonxT9W5s/v7HkVfU1HKnIjOGkniAwb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKKsAY%2FbtsonxT9W5s%2Fv7HkVfU1HKnIjOGkniAwb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;425&quot; height=&quot;464&quot; data-filename=&quot;3_Signup.png&quot; data-origin-width=&quot;425&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Sign up&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용할 이메일과 비밀번호를 입력해서 계정을 생성하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입력한 이메일에 확인 메일이 오면 클릭해서 가입을 완료하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;로그인하면 인스턴스를 추가하는 방법을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;4_Enroll.png&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b56L82/btsona6bEow/nIlHkAtZ3GIwNHcVAuMUf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b56L82/btsona6bEow/nIlHkAtZ3GIwNHcVAuMUf0/img.png&quot; data-alt=&quot;인스턴스 등록&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b56L82/btsona6bEow/nIlHkAtZ3GIwNHcVAuMUf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb56L82%2Fbtsona6bEow%2FnIlHkAtZ3GIwNHcVAuMUf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;263&quot; data-filename=&quot;4_Enroll.png&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인스턴스 등록&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;등록하기 위해 다음 명령어를 실행하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689997274755&quot; class=&quot;routeros&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose exec -t crowdsec cscli console enroll xxxxxxxxxxxxxxxxxxxxxxxxx&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;enroll 다음의 키는 웹에서 표시된 실제 키를 입력해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5_Enroll.png&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlM3Ri/btsohALFPKs/4G5fY9QC2OoYqfPTCzgoZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlM3Ri/btsohALFPKs/4G5fY9QC2OoYqfPTCzgoZK/img.png&quot; data-alt=&quot;인스턴스 등록&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlM3Ri/btsohALFPKs/4G5fY9QC2OoYqfPTCzgoZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlM3Ri%2FbtsohALFPKs%2F4G5fY9QC2OoYqfPTCzgoZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;920&quot; height=&quot;112&quot; data-filename=&quot;5_Enroll.png&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;112&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인스턴스 등록&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;인스턴스 등록이 완료되면 다시 웹 브라우저로 이동해서 새로고침 하면 요청이 표시됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;6_Accept.png&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;311&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwvyge/btsonSYcTYG/N3iyAhBkbJJW8QZrrgyOo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwvyge/btsonSYcTYG/N3iyAhBkbJJW8QZrrgyOo0/img.png&quot; data-alt=&quot;인스턴스 등록&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwvyge/btsonSYcTYG/N3iyAhBkbJJW8QZrrgyOo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwvyge%2FbtsonSYcTYG%2FN3iyAhBkbJJW8QZrrgyOo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;311&quot; data-filename=&quot;6_Accept.png&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;311&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인스턴스 등록&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;본인이 요청한 내용이 맞는지 확인하고 Accept enroll을 눌러서 등록을 마치면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;6. Traefik Bouncer 설치&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CrowdSec 설치 후 Bouncer를 설치해야 침입을 방지할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 Traefik Bouncer 설치를 통해 Traefik을 통해 오는 요청들을 필터링하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 다음 명령어로 API 키를 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689839279550&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose exec -t crowdsec cscli bouncers add traefik-bouncer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래와 같이 생성된 API 키가 화면에 표시됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;8_Key.png&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ltymZ/btsol8uILVd/Ipg6AVC07oUpiKkUXhKaL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ltymZ/btsol8uILVd/Ipg6AVC07oUpiKkUXhKaL0/img.png&quot; data-alt=&quot;API 키 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ltymZ/btsol8uILVd/Ipg6AVC07oUpiKkUXhKaL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FltymZ%2Fbtsol8uILVd%2FIpg6AVC07oUpiKkUXhKaL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;582&quot; height=&quot;113&quot; data-filename=&quot;8_Key.png&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;API 키 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;생성된 API 키는 다시 확인할 수 없기 때문에 따로 기록해 둡니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;.env 파일을 열어서 생성된 API를 &lt;b&gt;CROWDSEC_KEY_TRAEFIK&lt;/b&gt;의 값으로 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689839664388&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano ~/.env&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;API 키를 입력하고 저장한 후에 컨테이너를 시작합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689839746852&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose up -d traefik-bouncer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 Traefik에 미들웨어들을 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689841742768&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /data/traefik/config/rules/middlewares.toml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기존에 추가되어 있는 basicAuth 하단에 다음과 같은 내용을 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689841850091&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[http.middlewares.rateLimit.rateLimit]
  average = 0
  burst = 0

[http.middlewares.traefik-bouncer.forwardAuth]
  address = &quot;http://traefik-bouncer:8080/api/v1/forwardAuth&quot;
  trustForwardHeader = true

[http.middlewares.simpleAuthChain.chain]
  middlewares = [&quot;traefik-bouncer&quot;, &quot;simpleAuth&quot;]

[http.middlewares.rateLimitChain.chain]
  middlewares = [&quot;traefik-bouncer&quot;, &quot;redirect-web-to-websecure@internal&quot;, &quot;rateLimit&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Bouncer와 연동할 미들웨어를 추가하고 체인으로 Bouncer 미들웨어가 앞에 위치한 미들웨어들을 추가했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 Traefik이 사용하고 있는 simpleAuth를 변경해 보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689842474508&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /data/traefik/config/rules/routers.toml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;중간의 middlewares 부분을 다음과 같이 변경합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689842562249&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  middlewares = [&quot;simpleAuthChain&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;테스트를 위해 아래 명령어를 실행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689842892879&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker logs -f crowdsec&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 https://traefik.도메인으로 접속해서 로그에 현재 접속 중인 IP가 표시되는지 확인하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;수동으로 IP를 차단하고 싶으면 다음 명령어로 차단할 IP를 추가할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689878560705&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose exec -t crowdsec cscli decision add -i IP주소&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;차단한 IP를 삭제하는 것은 다음 명령어로 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689878617429&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose exec -t crowdsec cscli decision delete -i IP주소&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CrowdSec 대시보드의 Alerts에서 다음과 같이 차단된 IP들을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9_Dashboard.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v28J5/btsonHjjC4R/eAO8uS3tYhEw9P0oBqVmik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v28J5/btsonHjjC4R/eAO8uS3tYhEw9P0oBqVmik/img.png&quot; data-alt=&quot;대시보드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v28J5/btsonHjjC4R/eAO8uS3tYhEw9P0oBqVmik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv28J5%2FbtsonHjjC4R%2FeAO8uS3tYhEw9P0oBqVmik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;494&quot; data-filename=&quot;9_Dashboard.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대시보드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;공격이 얼마나 자주 어디에서 들어오는지 파악하는데 도움이 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;7. 차단 시간 설정&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;공격이 너무 빈번하다면 차단 시간을 늘리는 방법을 고려할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;차단 시간 설정은 CrowdSec의 profile.yaml을 통해 변경 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689958627276&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /data/crowdsec/config/profiles.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 부분을 찾아서 duration의 시간을 변경해 주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689959520138&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;decisions:
 - type: ban
   duration: 4h&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본값은 4시간인데 원하는 시간만큼의 값을 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;15일 정도 차단을 시키고 싶다면 &lt;b&gt;360h&lt;/b&gt;로 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690061251126&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose restart crowdsec&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정을 완료하고 CrowdSec을 재시작하면 반영됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CrowdSec은 다양한 곳에서 수집된 IP 리스트를 바탕으로 안전하게 외부에 노출된 서비스들을 보호할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다만 CrowdSec은 시스템의 로그 등을 수집할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 부분이 우려가 된다면 CrowdSec을 설치하지 않고 Traefik 만으로 사용해도 됩니다.&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 CrowdSec의 기본적인 설정이 완료됩니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/NAS</category>
      <category>CrowdSec</category>
      <category>fail2ban</category>
      <category>Intrusion Prevention</category>
      <category>traefik</category>
      <category>리버스 프록시</category>
      <category>침입 방지</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/792</guid>
      <comments>https://psychoria.tistory.com/792#entry792comment</comments>
      <pubDate>Mon, 24 Jul 2023 05:00:07 +0900</pubDate>
    </item>
    <item>
      <title>[자작NAS] 우분투 서버에 Docker로 MariaDB 설치</title>
      <link>https://psychoria.tistory.com/793</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MariaDB는 MySQL이 오라클에 인수된 이후 MySQL을 포크하면서 생긴 DBMS입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MySQL과 호환이 되기 때문에 MySQL을 대체해서 많이 사용됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MariaDB는 DB를 사용하는 다양한 소프트웨어와 연동이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Docker Compose로 MariaDB를 실행하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. docker-compose.yml 파일에 MariaDB 추가&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;현재 최신 버전인&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;b&gt;11.0.2&lt;/b&gt;를 기준으로 설치를 진행하겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;docker-compose.yml 파일을 생성해서 MariaDB를 추가할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689996439061&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano ~/docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같이 내용을 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690058615509&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: &quot;3.9&quot;
services:

...기타 컨테이너 설정

  mariadb:
    image: mariadb
    container_name: mariadb
    env_file: .env
    environment:
      - MYSQL_MYSQL_LOCALHOST_USER=${MARIADB_LOCALHOST_USER}
      - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
    volumes:
      - ${MARIADB_PATH}/data:/var/lib/mysql
    ports:
      - 3306:3306
    healthcheck:
      test: [&quot;CMD&quot;, &quot;/usr/local/bin/healthcheck.sh&quot;, &quot;--su-mysql&quot;, &quot;--connect&quot;, &quot;--innodb_initialized&quot;]
      interval: 10s
      timeout: 10s
      retries: 30
    restart: unless-stopped&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 MariaDB를 위한 환경변수들을 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690058758913&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano ~/.env&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 내용을 추가하고 비밀번호 부분은 실제 사용할 비밀번호를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690058735648&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# MariaDB
MARIADB_LOCALHOST_USER=mysql@locahost
MARIADB_ROOT_PASSWORD=비밀번호
MARIADB_PATH=/data/mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 MariaDB 컨테이너를 생성하고 실행하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690058897955&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose up -d mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 MariaDB가 실행됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. MariaDB 접속 방법&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 명령어로 MariaDB에 접속할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690059356098&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose exec -it mariadb mariadb -u root -p&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비밀번호는 .env에 입력한 비밀번호를 입력해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. root 계정 비밀번호 변경 방법&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;root 계정을 변경하려는 경우 MariaDB에 접속한 후 다음과 같이 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690059500656&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;use mysql;
UPDATE user SET password=PASSWORD('새비밀번호') WHERE User='root';
FLUSH PRIVILEGES;
quit;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;새비밀번호 부분에 새롭게 쓸 비밀번호를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;4. 새 데이터베이스 생성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다른 소프트웨어가 MariaDB를 연결하는 경우 새로운 데이터베이스와 사용자를 생성해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래 명령어는 Snipe-IT을 위한 DB와 사용자 생성 명령어입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690059779477&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE DATABASE snipeit;
CREATE USER 'snipeit'@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON snipeit.* TO 'snipeit'@'%';
FLUSH PRIVILEGES;
quit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비밀번호에는 원하는 비밀번호를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다른 서비스와 연동하려는 경우 snipeit 부분을 다른 원하는 이름으로 변경하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 MariaDB의 기본적인 설정이 완료됩니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/NAS</category>
      <category>DATABASE</category>
      <category>DBMS</category>
      <category>docker</category>
      <category>MariaDB</category>
      <category>MySQL</category>
      <category>데이터베이스</category>
      <category>도커</category>
      <category>마리아DB</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/793</guid>
      <comments>https://psychoria.tistory.com/793#entry793comment</comments>
      <pubDate>Mon, 24 Jul 2023 04:00:10 +0900</pubDate>
    </item>
    <item>
      <title>[자작NAS] 우분투 서버에 Docker로 Traefik 설치</title>
      <link>https://psychoria.tistory.com/791</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Traefik은 리버스 프록시와 부하 분산(Load balancer) 기능을 제공합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용하는 서비스들의 포트를 외부에 노출하지 않고 URL을 통해 외부에서 접속 가능해집니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;80, 443 포트만 외부에 노출시키고 URL을 통해서만 들어오기 때문에 보안이 강화됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 Traefik은 웹 대시보드와 미들웨어 지원, Let's Encrypt 지원 등 강력한 기능을 갖추고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_Diagram.webp&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;553&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9wqK6/btsobdpMZu4/zeeZjwXPb1lV0AT8EliCzK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9wqK6/btsobdpMZu4/zeeZjwXPb1lV0AT8EliCzK/img.webp&quot; data-alt=&quot;Traefik 다이어그램&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9wqK6/btsobdpMZu4/zeeZjwXPb1lV0AT8EliCzK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9wqK6%2FbtsobdpMZu4%2FzeeZjwXPb1lV0AT8EliCzK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;553&quot; data-filename=&quot;1_Diagram.webp&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;553&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Traefik 다이어그램&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다양한 기능을 갖춘 Traefik을 설치하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. Traefik 기본 설정&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 웹 대시보드에 접속할 때 사용할 비밀번호를 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 Basic auth에 사용할 비밀번호를 생성하기 위해 apache2-utils를 설치합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689400040214&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install -y apache2-utils&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 명령어로 패스워드를 생성하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689400337588&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;htpasswd -nb admin 비밀번호&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;admin 대신 사용을 원하는 아이디를 입력해도 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 &lt;b&gt;비밀번호&lt;/b&gt;에는 실제 원하는 비밀번호를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같은 형태로 값이 출력되는데 이 값을 저장해 둡니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;admin:$apr1$nnxKVbxh$63qwiV2RfGfLYNFKZr0n3/&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 Traefik을 위한 디렉토리와 파일들을 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689400680859&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo mkdir -p /data/traefik/config/rules&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Traefik은 TOML이라는 포맷으로 설정이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;생성한 디렉토리 밑에 traefik.toml 파일을 생성하고 내용을 작성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689400863308&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /data/traefik/config/traefik.toml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;내용의 &lt;b&gt;이메일주소&lt;/b&gt; 부분은 본인의 이메일 주소를 입력한 후에 traefik.toml 파일에 기록합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689402914636&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[entryPoints]
  [entryPoints.web]
    address = &quot;:80&quot;
    [entryPoints.web.http.redirections.entryPoint]
      to = &quot;websecure&quot;
      scheme = &quot;https&quot;

  [entryPoints.websecure]
    address = &quot;:443&quot;

[api]
  dashboard = true
  insecure = true

[ping]

[log]
  filePath = &quot;/logs/traefik.log&quot;
  level = &quot;INFO&quot;

[accessLog]
  filePath = &quot;/logs/access.log&quot;
  bufferingSize = 100
  [accessLog.filters]
    statusCodes = [&quot;204-299&quot;, &quot;400-499&quot;, &quot;500-599&quot;]

[serversTransport]
  insecureSkipVerify = true

[certificatesResolvers.lets-encrypt.acme]
  email = &quot;이메일주소&quot;
  storage = &quot;acme.json&quot;
  [certificatesResolvers.lets-encrypt.acme.tlsChallenge]

[providers.docker]
  watch = true
  exposedByDefault = false
  network = &quot;web&quot;

[providers.file]
  directory = &quot;/rules&quot;
  watch = true

[tls.options]
  [tls.options.default]
    minVersion = &quot;VersionTLS12&quot;
    curvePreferences = [&quot;secp521r1&quot;, &quot;secp384r1&quot;]
    cipherSuites = [
      &quot;TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256&quot;,
      &quot;TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384&quot;,
      &quot;TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305&quot;,
      &quot;TLS_AES_128_GCM_SHA256&quot;,
      &quot;TLS_AES_256_GCM_SHA384&quot;,
      &quot;TLS_CHACHA20_POLY1305_SHA256&quot;
    ]
    sniStrict = true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 middlewares.toml 파일을 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689403112344&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /data/traefik/config/rules/middlewares.toml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 내용을 입력하고 저장하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689403400401&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[http.middlewares.simpleAuth.basicAuth]
  users = [
    &quot;admin:$apr1$nnxKVbxh$63qwiV2RfGfLYNFKZr0n3/&quot;
  ]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;users 부분에는 처음에 htpasswd 명령어로 생성한 값을 그대로 입력&lt;/b&gt;하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 routers.toml을 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689841302301&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano /data/traefik/config/rules/routers.toml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 내용을 입력하고 저장하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689841365218&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[http.routers.api]
  rule = &quot;Host(`traefik.도메인`)&quot;
  entrypoints = [&quot;websecure&quot;]
  middlewares = [&quot;simpleAuth&quot;]
  service = &quot;api@internal&quot;
  [http.routers.api.tls]
    certResolver = &quot;lets-encrypt&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;내용의 &lt;b&gt;rule 부분의 도메인은 본인이 보유하고 있는 도메인(xxx.duckdns.org)으로 변경&lt;/b&gt;하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막 Let's Encrypt 정보를 담을 acme.json 파일을 생성하고 권한을 변경합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689620523572&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo touch /data/traefik/config/acme.json
sudo chmod 600 /data/traefik/config/acme.json&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 기본적인 설정이 준비됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. Traefik 컨테이너 생성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Traefik 컨테이너를 생성하기 위해 docker-compose.yml 파일을 작성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;현재 최신 버전인 &lt;b&gt;v2.10.3&lt;/b&gt;을 기준으로 작성을 했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689409689144&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano ~/docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같이 입력하고 저장합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689625847243&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: &quot;3.9&quot;
services:
  traefik:
    image: traefik
    container_name: traefik
    env_file: .env
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ${TRAEFIK_PATH}/config/traefik.toml:/traefik.toml
      - ${TRAEFIK_PATH}/config/rules:/rules
      - ${TRAEFIK_PATH}/config/acme.json:/acme.json
      - ${TRAEFIK_PATH}/logs:/logs
    ports:
      - 80:80
      - 443:443
      - 8080:8080
    networks:
      - web
    healthcheck:
      test: [&quot;CMD&quot;, &quot;traefik&quot;, &quot;healthcheck&quot;, &quot;--ping&quot;]
      interval: 10s
      timeout: 10s
      retries: 30
    restart: always

  whoami:
    image: traefik/whoami
    container_name: whoami
    env_file: .env
    networks:
      - web
    labels:
      - traefik.enable=true
      - traefik.docker.network=web
      - traefik.http.routers.whoami.rule=Host(`whoami.${URL}`)
      - traefik.http.routers.whoami.tls=true
      - traefik.http.routers.whoami.tls.certresolver=lets-encrypt
      - traefik.http.services.whoami.loadbalancer.server.port=80

networks:
  web:
    name: web&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 환경변수를 설정할 .env 파일을 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689626096132&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano ~/.env&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같이 내용을 입력해주고 &lt;b&gt;도메인은 본인이 사용할 도메인을 입력&lt;/b&gt;해 주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689626195240&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Common
URL=도메인

# Traefik
TRAEFIK_PATH=/data/traefik&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정을 완료했으면 서비스들을 실행하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689626302776&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose up -d&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. Traefik 대시보드 접속 및 적용 확인&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;서비스가 실행되고 웹 브라우저에 http://IP주소:8080로 접속하면 Traefik 대시보드가 표시됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_Dashboard.png&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2f7vh/btsn27nD8A5/Cz2FEmnt0te2kogc2zV1PK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2f7vh/btsn27nD8A5/Cz2FEmnt0te2kogc2zV1PK/img.png&quot; data-alt=&quot;Traefik&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2f7vh/btsn27nD8A5/Cz2FEmnt0te2kogc2zV1PK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2f7vh%2Fbtsn27nD8A5%2FCz2FEmnt0te2kogc2zV1PK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1124&quot; height=&quot;880&quot; data-filename=&quot;1_Dashboard.png&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Traefik&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주소창에 &lt;b&gt;traefik.도메인&lt;/b&gt; 형태로 입력하면 외부에서도 접속이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;처음에 입력했던 유저명과 패스워드를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;웹 브라우저에서 &lt;b&gt;whoami.도메인&lt;/b&gt;으로 접속해 보면 해당 서비스로 접속되는 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt;테스트를 위해 추가한 whoami는 정상 동작 확인 후 삭제해도 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;추후에 서비스들을 리버스 프록시에 추가하려면 서비스 하단에 labels 부분과 networks를 추가하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Plex의 경우 다음과 같은 내용을 추가하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689628848855&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    networks:
      - web
    labels:
      - traefik.enable=true
      - traefik.docker.network=web
      - traefik.http.routers.plex.rule=Host(`plex.${URL}`)
      - traefik.http.routers.plex.tls=true
      - traefik.http.routers.plex.tls.certresolver=lets-encrypt
      - traefik.http.services.plex.loadbalancer.server.port=32400&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span&gt;이것으로 Traefik 설치 및 리버스 프록시 설정이 완료됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/NAS</category>
      <category>caddy</category>
      <category>docker</category>
      <category>Let's Encrypt</category>
      <category>Load Balancer</category>
      <category>nginx</category>
      <category>reverse proxy</category>
      <category>traefik</category>
      <category>로드밸런서</category>
      <category>리버스 프록시</category>
      <category>트래픽</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/791</guid>
      <comments>https://psychoria.tistory.com/791#entry791comment</comments>
      <pubDate>Thu, 20 Jul 2023 16:00:54 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] Array 메소드 - map()</title>
      <link>https://psychoria.tistory.com/790</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;자바스크립트를 하는 사람이라면 map()은 꼭&amp;nbsp; 알아야 하는 메소드 중 하나입니다.&lt;br /&gt;map() 메서드는 &lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;원래 배열&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;의 각 요소에 주어진 함수를 적용하여&lt;span style=&quot;color: #006dd7;&quot;&gt; &lt;b&gt;&lt;u&gt;새 배열&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;을 만드는 자바스크립트의 내장 배열 메서드 입니다. &lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;map() 메서드는 원래 배열을 수정하지 않습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679204158127&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;array.map(function(currentValue, index, arr), thisValue)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;map()메소드 사용 시 다음의 2개의 파라미터를 적용 시켜야 합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- function: 배열의 각 요소에 적용할 함수입니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp;currentValue: 처리 중인 현재 요소의 값&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp;index: 처리 중인 현재 요소의 값&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp;arr: map() 메서드가 호출된 원래 배열&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- thisValue: 선택 사항으로 함수를 실행할 때 이 값으로 전달할 값입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;&quot;&gt;예제) 숫자 배열의 각 숫자에 2를 곱하는 함수를 적용하여 &lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;doubleNumbers라는 새로운 배열&lt;/span&gt;&lt;/b&gt;을 만들었습니다. map()메서드가 이 함수를 숫자 배열의 각 요소에 적용하고 새 배열을 반환한 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679204621956&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let numbers = [1, 2, 3, 4, 5];
let doubledNumbers = numbers.map(function(num) {
  return num * 2;
});
console.log(doubledNumbers); // output: [2, 4, 6, 8, 10]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;201&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T1xYa/btr4w5wOikY/PGiB9JLVB6OuJV2FcwDrBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T1xYa/btr4w5wOikY/PGiB9JLVB6OuJV2FcwDrBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T1xYa/btr4w5wOikY/PGiB9JLVB6OuJV2FcwDrBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT1xYa%2Fbtr4w5wOikY%2FPGiB9JLVB6OuJV2FcwDrBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;201&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;201&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;모던 자바스크립트를 통해 arrow 함수를 사용하여 코드를 다음과 같이 간략화 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679205261735&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let numbers = [1, 2, 3, 4, 5];
let doubledNumbers = numbers.map(num =&amp;gt; num * 2);
console.log(doubledNumbers); // output: [2, 4, 6, 8, 10]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;() 메서드는 기존 배열의 각 요소에 함수를 적용하여&lt;u&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt; &lt;b&gt;새 배열&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;을 만듭니다. 이 방법은 데이터를 한 형식에서 다른 형식으로 변환해야 할 때 유용합니다. 따라서, map() 메서드의 익숙해지면&amp;nbsp; 자바스크립트에서 보다 효율적이고 표현력 있는 코드를 작성할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming/JavaScript</category>
      <category>javascript</category>
      <category>map()</category>
      <category>맵메소드</category>
      <category>자바스크립트</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/790</guid>
      <comments>https://psychoria.tistory.com/790#entry790comment</comments>
      <pubDate>Sun, 19 Mar 2023 15:01:38 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript ]Object Array 메소드 push / pop / shift / unshift</title>
      <link>https://psychoria.tistory.com/789</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt;배열은 실무에서도 정말 많이 사용하는 데이터 구조이며 익숙해 지는 것이 중요합니다. 그 중에서도 집중해서 연습해봐야 하는 것은 object를 담고 있는 array 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679084708094&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const emojis = [
{name: '호랑이',  emoji:' '},
{name: '토끼', emoji:' '},
{name: '용', emoji:' '},
{name: '고양이', emoji:' '}
];&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. &lt;span&gt;push() -&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;배열&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;끝에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하나&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이상의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;요소를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;배열의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;새&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;길이를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;반환합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679084789962&quot; class=&quot;xquery&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;emojis.push({name: '소', emoji:' '});
console.log(emojis);
/* 결과
{name: '호랑이',  emoji:' '},
{name: '토끼', emoji:' '},
{name: '용', emoji:' '},
{name: '고양이', emoji:' '}
{name: '소', emoji:' '}
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;2. pop() -&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;배열에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;마지막&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;요소를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제거하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;해당요소를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;반환합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679084839670&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;emojis.pop();
console.log(emojis);
/* 결과
{name: '호랑이',  emoji:' '},
{name: '토끼', emoji:' '},
{name: '용', emoji:' '},
{name: '고양이', emoji:' '}
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;3. shift() - &lt;/b&gt;&lt;/span&gt;&lt;span&gt;배열에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;첫&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;번째&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;요소를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제거하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;해당&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;요소를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;반환합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679084892683&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;emojis.shift();
console.log(emojis);  
/* 결과
{name: '토끼', emoji:' '},
{name: '용', emoji:' '},
{name: '고양이', emoji:' '}
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4.unshift() - &lt;span&gt;배열의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;시작&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;부분에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하나&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이상의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;요소를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;배열의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;새&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;길이를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;반환합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679085041173&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;emojis.push({name: '소', emoji:' '});
console.log(emojis);

/*결과
{name: '소', emoji:' '},
{name: '토끼', emoji:' '},
{name: '용', emoji:' '},
{name: '고양이', emoji:' '}
*/&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programming/JavaScript</category>
      <category>javascript</category>
      <category>ObjectArray</category>
      <category>POP</category>
      <category>push</category>
      <category>Shift</category>
      <category>unshift</category>
      <category>자바스크립트</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/789</guid>
      <comments>https://psychoria.tistory.com/789#entry789comment</comments>
      <pubDate>Sat, 18 Mar 2023 05:32:15 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] Array 메소드 (push / pop / shift / unshift)</title>
      <link>https://psychoria.tistory.com/788</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;배열은 자바스크립트에서 가장 기본적인 데이터 구조 중 하나이며, 데이터를 저장하고 조작하는데 사용됩니다. 이 블로그에서는 자바스크립트에서 가장 일반적으로 사용되는 배열 방법에 대해 확인할 예정입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;1. push()&lt;/b&gt; - 배열 끝에 하나 이상의 요소를 추가하고 배열의 새 길이를 반환합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679033515116&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const arr = [' ',' ',' ', ' '];
arr.push(' ');
console.log(arr);
// 결과 [' ',' ',' ', ' ',' ']&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;2. pop()&lt;/b&gt; - 배열에서 마지막 요소를 제거하고 해당요소를 반환합니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679033541612&quot; class=&quot;autoit&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const arr = [' ',' ',' ', ' '];
arr.pop();
console.log(arr);
// 결과:[ ' ',' ',' ']&lt;/code&gt;&lt;/pre&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; data-mce-fragment=&quot;1&quot;&gt;&lt;/script&gt;
&lt;script data-mce-fragment=&quot;1&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;3.shift()&lt;/b&gt; - 배열에서 첫 번째 요소를 제거하고 해당 요소를 반환합니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679033569856&quot; class=&quot;autoit&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const arr = [' ',' ',' ', ' '];
arr.shift();
console.log(arr);  
// 결과: [' ',' ', ' ']&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&lt;br /&gt;4.unshift()&lt;/b&gt; - 배열의 시작 부분에 하나 이상의 요소를 추가하고 배열의 새 길이를 반환합니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1679033578589&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const arr = [' ',' ',' ', ' '];
arr.unshift(' ');
console.log(arr);
// 결과: [' ',' ',' ',' ', ' ']&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GSNOj/btr4l1Iu43G/v03Taqvz9iMm474LIR3U9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GSNOj/btr4l1Iu43G/v03Taqvz9iMm474LIR3U9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GSNOj/btr4l1Iu43G/v03Taqvz9iMm474LIR3U9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGSNOj%2Fbtr4l1Iu43G%2Fv03Taqvz9iMm474LIR3U9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;858&quot; height=&quot;214&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Programming/JavaScript</category>
      <category>javascript</category>
      <category>POP</category>
      <category>push</category>
      <category>Shift</category>
      <category>unshift</category>
      <category>자바스크립트</category>
      <category>자바스크립트 배열 메소드</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/788</guid>
      <comments>https://psychoria.tistory.com/788#entry788comment</comments>
      <pubDate>Fri, 17 Mar 2023 15:13:57 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 파이썬 셋(set) 사용 방법</title>
      <link>https://psychoria.tistory.com/787</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파이썬의 셋(set)은 파이썬의 기본 내장 데이터 타입 중 하나입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;집합을 표현하는 데이터 타입으로 합집합, 교집합, 차집합 등의 연산을 지원합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;셋의 가장 큰 특징은 중복된 값을 허용하지 않는다는 점입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또 하나의 특징은 순서가 없기 때문에 인덱스를 통해 값을 가져올 수 없다는 점입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파이썬의 셋(set) 데이터 타입에 대해 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. set 생성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파이썬에서 set은 명시적으로 set()을 입력해서 생성할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660197366186&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set()
b = set([1, 1, 2, 3])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;a와 같이 빈 set을 생성하거나 리스트를 통해서 set을 생성할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;set은 중복을 허용하지 않기 때문에 리스트에 동일한 값이 존재하는 경우 한 개만 set에 입력됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. set 연산&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파이썬의 set은 집합을 표현하기 때문에 합집합, 교집합, 차집합, 대칭 차집합 연산들을 지원합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;연산자나 메소드를 통해 집합 연산의 값을 구할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1) 합집합 (union)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;A와 B라는 집합이 있을 때 합집합은 다음과 같이 표현됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_union.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccAawi/btrJqm0Ym9s/6TdmJHOOM6Ruwn9kVTycPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccAawi/btrJqm0Ym9s/6TdmJHOOM6Ruwn9kVTycPk/img.png&quot; data-alt=&quot;합집합&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccAawi/btrJqm0Ym9s/6TdmJHOOM6Ruwn9kVTycPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccAawi%2FbtrJqm0Ym9s%2F6TdmJHOOM6Ruwn9kVTycPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;280&quot; data-filename=&quot;1_union.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;합집합&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파이썬 set의 합집합 역시 양쪽의 값을 모두 포함하며 중복된 값은 한 개만 포함됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660199969341&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

print(a.union(b))  # {1, 2, 3, 4, 5, 6}
print(a | b)  # {1, 2, 3, 4, 5, 6}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;합집합은 union() 메소드나 | 연산자로 구할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;a와 b의 값이 모두 포함되어 있고 중복된 3, 4는 한 번만 입력되어 있는 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2) 교집합 (intersection)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;교집합은 A와 B 양쪽 모두에 존재하는 값들만 구합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2_intersection.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4mpub/btrJqqWbn9L/PyoIKug8242sWTACtHam11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4mpub/btrJqqWbn9L/PyoIKug8242sWTACtHam11/img.png&quot; data-alt=&quot;교집합&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4mpub/btrJqqWbn9L/PyoIKug8242sWTACtHam11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4mpub%2FbtrJqqWbn9L%2FPyoIKug8242sWTACtHam11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;280&quot; data-filename=&quot;2_intersection.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;교집합&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;교집합은 intersection() 메소드나 &amp;amp; 연산자로 구할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660286881646&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

print(a.intersection(b))  # {3, 4}
print(a &amp;amp; b)  # {3, 4}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;a와 b에 모두 존재하는 3, 4만이 결과로 출력되는 것을 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3) 차집합 (difference)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;차집합은 다음과 같이 표현됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3_difference.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yCI4R/btrJA4w8jSv/etGRxoBpK38AahhRar6Y4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yCI4R/btrJA4w8jSv/etGRxoBpK38AahhRar6Y4K/img.png&quot; data-alt=&quot;차집합&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yCI4R/btrJA4w8jSv/etGRxoBpK38AahhRar6Y4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyCI4R%2FbtrJA4w8jSv%2FetGRxoBpK38AahhRar6Y4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;280&quot; data-filename=&quot;3_difference.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;차집합&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;A에만 존재하는 값들만 결과로 포함시킵니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660287073210&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

print(a.difference(b))  # {1, 2}
print(a - b)  # {1, 2}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;차집합은 difference() 메소드나 - 연산자로 구할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;a에서 b에 존재하는 3, 4를 제외시킨 {1, 2}가 결과로 출력됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;4) 대칭 차집합 (symmetric_difference)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;대칭 차집합은 다음과 같이 양쪽에 존재하는 값들을 제외한 집합입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;4_symmetric_difference.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6DopH/btrJBdtW0wE/dwhVSGXTS1znI3S3iQu8k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6DopH/btrJBdtW0wE/dwhVSGXTS1znI3S3iQu8k1/img.png&quot; data-alt=&quot;대칭 차집합&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6DopH/btrJBdtW0wE/dwhVSGXTS1znI3S3iQu8k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6DopH%2FbtrJBdtW0wE%2FdwhVSGXTS1znI3S3iQu8k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;280&quot; data-filename=&quot;4_symmetric_difference.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대칭 차집합&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가운데 중복되는 값만 제외된 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660287386862&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

print(a.symmetric_difference(b))  # {1, 2, 5, 6}
print(a ^ b)  # {1, 2, 5, 6}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;대칭 차집합은 symmetric_difference()를 호출하거나 ^ 연산자로 구할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;a와 b 양쪽에 존재하는 3, 4를 제외한 {1, 2, 5, 6}이 결과로 출력됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block; text-align: center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-6598061204302497&quot; data-ad-slot=&quot;8320619864&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;5) 기타 집합 관련 메소드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;집합 연산과 관련해서 update로 끝나는 메소드들이 존재합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어, difference()와 대응하는 difference_update()가 존재합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;update가 없는 경우 새로운 set을 생성해서 리턴하기 때문에 기존 set의 값이 변하지 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;update()가 있는 경우는 리턴이 없고 기존의 set 값을 직접 변경합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;각각의 집합 연산에 대응하는 update() 메소드들은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;집합 연산&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;메소드&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;연산자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;update 버전 메소드&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;update 버전 연산자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;합집합&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;union()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;|&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;update()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;|=&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;교집합&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;intersection()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;amp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;intersection_update()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;amp;=&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;차집합&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;difference()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;difference_update()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;-=&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;대칭 차집합&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;symmetric_difference()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;^&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;symmetric_difference_update()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;^=&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예제 코드는 다음과 같으며 새로운 집합을 생성하지 않고 원본 집합의 값을 변경하는 것을 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660289070284&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

a.update(b)  # a |= b
print(a)  # {1, 2, 3, 4, 5, 6}

a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

a.intersection_update(b)  # a &amp;amp;= b
print(a)  # {3, 4}

a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

a.difference_update(b)  # a -= b
print(a)  # {1, 2}

a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

a.symmetric_difference_update(b)  # a ^= b
print(a)  # {1, 2, 5, 6}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 두 집합 사이의 관계를 확인할 수 있는 메소드들도 존재합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 isdisjoint()는 다음과 같이 두 집합에 겹치는 값이 존재하지 않는 경우 True를 리턴합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5_disjoint.png&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AgSFE/btrJRtctzVJ/s8WTgG8UDqD2sb4kIkCuR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AgSFE/btrJRtctzVJ/s8WTgG8UDqD2sb4kIkCuR0/img.png&quot; data-alt=&quot;disjoint&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AgSFE/btrJRtctzVJ/s8WTgG8UDqD2sb4kIkCuR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAgSFE%2FbtrJRtctzVJ%2Fs8WTgG8UDqD2sb4kIkCuR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;452&quot; height=&quot;255&quot; data-filename=&quot;5_disjoint.png&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;disjoint&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같이 겹치는 값이 없는 두 번째 상황({1, 2, 3}, {4, 5, 6})에서 True를 출력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660626204752&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])
print(a.isdisjoint(b))  # False

a = set([1, 2, 3])
b = set([4, 5, 6])
print(a.isdisjoint(b))  # True&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 집합끼리의 포함 관계를 나타내는 상위집합(superset)과 부분집합(subset) 관계도 구할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660626466871&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
b = set([2, 3])
print(a.issuperset(b))  # True
print(a &amp;gt;= b)  # True

print(b.issubset(a))  # True
print(b &amp;lt;= a)  # True&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 a가 b를 완전히 포함하고 있기 때문에 a는 b의 상위집합(superset)입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 b는 a의 부분집합(subset)이라고도 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;issuperset()은 &amp;gt;= 연산자로도 표현이 가능하고 issubset()은 &amp;lt;= 연산자로 표현이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;issuperset()과 issubset()은 a와 b가 완전히 동일한 값일 때도 True를 리턴합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;a와 b가 같은 상황을 제외한 진부분집합(proper subset)과 진상위집합(proper superset) 역시 구할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;부분집합과 상위집합을 구하는 전체 메소드와 연산자는 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;집합 관계&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메소드&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;연산자&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;부분집합&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;issubset()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;lt;=&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;상위집합&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;issuperset()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;진부분집합&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;없음&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;진상위집합&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;없음&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;연산자와 메소드를 통해 집합들의 관계와 연산 결과를 쉽게 구할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. set 길이 확인&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;set은 순서가 없는 데이터 타입이지만 길이를 구하는 것은 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660627019642&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
print(len(a))  # 4&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다른 타입과 동일한 방법으로 len()을 통해 길이를 얻을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;4. set 값 추가/삭제&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;set은 값을 추가하거나 삭제하기 위한 다양한 메소드가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;값을 추가할 때는 add() 메소드를 호출하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660627271821&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
a.add(5)
print(a)  # {1, 2, 3, 4, 5}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;특정 값을 한 개 삭제할 때는 discard()와 remove()를 호출하면 되는데 약간의 차이가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660627391815&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
a.discard(4)
a.discard(4)
a.remove(3)
# a.remove(3)  # KeyError&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;remove()는 set 안에 없는 값을 삭제하려고 할 때 KeyError를 발생시킵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;discard()는 값이 없는 경우에도 에러가 발생하지 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;만약 값의 유무와 상관없이 삭제를 시도하고 싶은 경우 discard()를 호출하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 랜덤하게 값을 한 개 삭제하고 동시에 리턴받고 싶은 경우는 pop()을 호출하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660627671424&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
print(a.pop())
print(a)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;pop()이 값을 한 개 리턴하고 그 값이 a에서 삭제된 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막으로 모든 값을 삭제하고 싶은 경우 clear()를 호출하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660627736685&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
a.clear()
print(a)  # set()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 값들이 지워진 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;5. 기타 set 메소드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막으로 copy() 메소드를 통해 동일한 set을 새로 생성할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1660627885006&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a = set([1, 2, 3, 4])
b = a.copy()

b.add(5)
print(a)  # {1, 2, 3, 4}
print(b)  # {1, 2, 3, 4, 5}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;copy()로 복사한 set은 한 쪽을 변경했을 때 다른 쪽이 영향을 받지 않는 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파이썬의 set은 집합 연산에 특화된 데이터 타입입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 중복된 값을 허용하지 않는 특성때문에 중복 값을 걸러내거나 하는데 활용되기도 합니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Programming/Python</category>
      <category>python</category>
      <category>set</category>
      <category>데이터 구조</category>
      <category>세트</category>
      <category>셋</category>
      <category>집합</category>
      <category>집합 연산</category>
      <category>파이썬</category>
      <category>파이썬 데이터 타입</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/787</guid>
      <comments>https://psychoria.tistory.com/787#entry787comment</comments>
      <pubDate>Thu, 18 Aug 2022 15:39:21 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 전원 끄기 (시스템 종료) 명령어</title>
      <link>https://psychoria.tistory.com/786</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;리눅스 환경에서 명령어를 입력해서 시스템을 종료해야 하는 경우가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;시스템 종료가 아닌 재부팅의 경우 아래 링크에서 명령어들을 확인 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://psychoria.tistory.com/785&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.24 - [IT/Linux] - 리눅스 재부팅(reboot) 명령어&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;명령어를 입력해서 리눅스 시스템의 전원을 끄는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. systemctl 명령어&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;systemctl poweroff나 poweroff 명령어를 입력하면 바로 시스템의 전원을 끄는 것이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659935853866&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl poweroff&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;systemctl없이 poweroff만으로도 시스템 종료가 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659935906195&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo poweroff&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;systemctl poweroff나 poweroff 명령어를 입력하면 바로 리눅스 시스템을 종료할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. shutdown 명령어&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;shutdown 명령어는 기본적인 리눅스 시스템 종료 명령어입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;재부팅이나 시스템 종료를 위한 옵션을 제공하는데 옵션을 지정하지 않으면 시스템을 종료시킵니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659934478042&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;명령어를 실행하면 1분 뒤로 시스템 종료가 예약됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;명령어를 입력하자마자 즉시 시스템을 종료하고 싶은 경우 now를 뒤에 추가해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659934632123&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown now&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단하게 전원을 끄는 작업을 예약하는 것도 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659934747971&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown +5&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;+와 숫자를 조합하면 지정된 분 이후에 시스템이 종료되는데 위 명령어는 5분 이후로 시스템 종료가 예약됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;+0의 경우 now와 동일하게 동작합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block; text-align: center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-6598061204302497&quot; data-ad-slot=&quot;8320619864&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;혹은 24시간 형식으로 특정 시간에 시스템 종료를 예약하는 것도 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659934958195&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown 22:00&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;시스템 종료를 예약할 때 다른 접속한 사용자에게 사유와 시간을 공지하는 것도 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659935223994&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown +5 &quot;No longer available&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다른 사용자들에게 이런 형태로 메시지가 표시됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_Broadcast.png&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE4xqh/btrJfZbUEYq/WTe6O3o4funGTW7tclMCCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE4xqh/btrJfZbUEYq/WTe6O3o4funGTW7tclMCCk/img.png&quot; data-alt=&quot;시스템 종료 알림&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE4xqh/btrJfZbUEYq/WTe6O3o4funGTW7tclMCCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE4xqh%2FbtrJfZbUEYq%2FWTe6O3o4funGTW7tclMCCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;740&quot; height=&quot;95&quot; data-filename=&quot;1_Broadcast.png&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;시스템 종료 알림&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예약된 시스템 종료를 취소할 때는 -c 옵션을 사용하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659935573287&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown -c&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;shutdown 명령어를 실행하면 시스템 종료 예약과 예약 취소를 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/Linux</category>
      <category>CentOS</category>
      <category>Linux</category>
      <category>poweroff</category>
      <category>shutdown</category>
      <category>ubuntu</category>
      <category>리눅스</category>
      <category>시스템종료</category>
      <category>우분투</category>
      <category>전원끄기</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/786</guid>
      <comments>https://psychoria.tistory.com/786#entry786comment</comments>
      <pubDate>Mon, 8 Aug 2022 15:00:40 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 재부팅(reboot) 명령어</title>
      <link>https://psychoria.tistory.com/785</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;리눅스 환경에서 명령어를 입력해서 시스템을 재부팅해야 하는 경우가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;SSH을 통해서 접속하는 경우 명령어를 입력해야 시스템을 재부팅할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;명령어를 통해 리눅스를 재부팅하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. systemctl 명령어&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;systemctl reboot 명령어나 reboot 명령어를 통해 재부팅이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 명령어를 입력하면 재부팅이 바로 진행됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648008211625&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl reboot&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;혹은 reboot 명령어만 입력해도 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648008359761&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo reboot&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;reboot 명령어로 재부팅이 안 되는 경우 &lt;b&gt;-f&lt;/b&gt; (--force)를 추가해서 강제로 재부팅을 시도할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648009926777&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl reboot -f&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;systemctl reboot(reboot) 명령어를 입력하면 간단하게 재부팅을 진행할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. shutdown 명령어&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;shutdown 명령어로도 재부팅이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;shutdown 명령어로 재부팅을 하려면 -r (--reboot)을 추가하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648010703391&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown -r&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;shutdown 명령어는 1분 뒤로 재부팅을 예약합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;reboot 명령어처럼 즉시 재부팅을 하려면 now를 추가해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648010860477&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 shutdown 명령어는 지정된 시간에 재부팅이 가능하도록 해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648010987645&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown -r +5&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;+뒤의 숫자만큼의 분이 지나고 재부팅이 진행된다는 의미로 여기서는 5분 뒤로 예약됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;now는 +0을 입력한 것과 동일하게 동작합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block; text-align: center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-6598061204302497&quot; data-ad-slot=&quot;8320619864&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;혹은 24시간 형식으로 예약 시간을 지정하는 것도 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648011253822&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown -r 22:00&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이렇게 설정하는 경우 밤 10시에 재부팅이 진행됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;재부팅을 예약할 때 다른 접속한 사용자들에게 재부팅 사유와 시간을 알리는 것이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648011675368&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown -r +10 &quot;System update&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;서버에 접속한 다른 사용자들에게 다음과 같이 표시됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_message.png&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coANFc/btrwWhpOrnU/Vn72NCEbO4pvAYe3kvuqC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coANFc/btrwWhpOrnU/Vn72NCEbO4pvAYe3kvuqC0/img.png&quot; data-alt=&quot;재부팅 알림&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coANFc/btrwWhpOrnU/Vn72NCEbO4pvAYe3kvuqC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoANFc%2FbtrwWhpOrnU%2FVn72NCEbO4pvAYe3kvuqC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;748&quot; height=&quot;94&quot; data-filename=&quot;1_message.png&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;재부팅 알림&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;시간 부분 뒤에 메시지를 입력해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막으로 예약된 재부팅을 취소할 때는 &lt;b&gt;-c&lt;/b&gt;를 사용하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648011854381&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo shutdown -c&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;shutdown 명령어로 간단하게 재부팅 예약과 취소가 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;리눅스의 reboot과 shutdown 명령어로 시스템 재부팅을 진행할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;shutdown 명령어를 사용하면 쉽게 예약이나 취소하는 것도 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;쉽게 곧바로 재부팅을 진행하려면 reboot 명령어를 입력해서 진행하면 됩니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/Linux</category>
      <category>CentOS</category>
      <category>Linux</category>
      <category>reboot</category>
      <category>shutdown</category>
      <category>ubuntu</category>
      <category>리눅스</category>
      <category>재부팅</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/785</guid>
      <comments>https://psychoria.tistory.com/785#entry785comment</comments>
      <pubDate>Thu, 24 Mar 2022 04:00:58 +0900</pubDate>
    </item>
    <item>
      <title>[자작NAS] 우분투 서버에 Docker로 Joplin 설치</title>
      <link>https://psychoria.tistory.com/784</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://joplinapp.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Joplin&lt;/a&gt;은 오픈소스 메모 작성(note-taking) 애플리케이션입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_Joplin.jpg&quot; data-origin-width=&quot;6912&quot; data-origin-height=&quot;3456&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDg7D3/btrs7Bft0hp/qxKFJ4eTAMhTj2CMeL6O31/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDg7D3/btrs7Bft0hp/qxKFJ4eTAMhTj2CMeL6O31/img.jpg&quot; data-alt=&quot;Joplin&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDg7D3/btrs7Bft0hp/qxKFJ4eTAMhTj2CMeL6O31/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDg7D3%2Fbtrs7Bft0hp%2FqxKFJ4eTAMhTj2CMeL6O31%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;6912&quot; height=&quot;3456&quot; data-filename=&quot;1_Joplin.jpg&quot; data-origin-width=&quot;6912&quot; data-origin-height=&quot;3456&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Joplin&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Joplin을 NAS에 설치하면 PC나 안드로이드, 아이폰 앱 등을 통해 메모 동기화가 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;언제든지 메모를 기록하고 바로 찾아볼 수 있게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Docker로 Joplin 서버를 실행하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. PostgreSQL 데이터베이스 설정&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Joplin을 설치하려면 PostgreSQL 데이터베이스를 연동해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;PostgreSQL의 설치는 아래 링크를 통해 확인 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://psychoria.tistory.com/783&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.02.14 - [IT/NAS] - [자작NAS] 우분투 서버에 Docker로 PostgreSQL 설치&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;PostgreSQL가 처음 설치되는 경우와 이미 존재하는 경우와 따라서 진행 방법이 달라집니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1) 처음 PostgreSQL 컨테이너를 생성하는 경우&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;처음 PostgreSQL 컨테이너를 생성하는 경우 -e 로 다음 값들을 지정해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;POSTGRES_USER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;joplin&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;POSTGRES_DB&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;joplin&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;전체적인 명령어는 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644808685792&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker run -d \
--name=postgres \
-e POSTGRES_PASSWORD='pg_password' \
-e POSTGRES_USER='joplin' \
-e POSTGRES_DB='joplin' \
-v /data/postgres/data:/var/lib/postgresql/data \
postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;명령어의 pg_password 부분은 원하는 비밀번호를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본 계정이 joplin으로 생성되고 같은 이름으로 데이터베이스가 생성됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2) 기존 PostgreSQL이 존재하는 경우&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기존에 사용 중인 PostgreSQL이 존재하는 경우 사용 중인 DB를 연결해서 사용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용자와 데이터베이스를 직접 생성해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644809105187&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker exec -it postgres psql -U postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;명령어의 -U &lt;b&gt;postgres&lt;/b&gt;는 PostgreSQL의 기본 계정입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;DB에 접속한 후 joplin이라는 이름으로 계정과 데이터베이스를 생성해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644810783909&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE DATABASE joplin;
CREATE USER joplin WITH ENCRYPTED PASSWORD 'pg_password';
GRANT ALL PRIVILEGES ON DATABASE joplin TO joplin;
\q&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;명령어의 pg_password 부분은 원하는 비밀번호를 입력해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;PostgreSQL 버전이 15 이상인 경우 Joplin에서 다음과 같은 에러가 발생할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;permission&amp;nbsp;denied&amp;nbsp;for&amp;nbsp;schema&amp;nbsp;public&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 에러가 보이는 경우 \q 명령어 전에 다음 명령어를 추가로 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673753439070&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;\c joplin postgres
GRANT ALL ON SCHEMA public TO joplin;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;public schema에 권한을 추가로 주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. Joplin 컨테이너 생성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Joplin 컨테이너를 생성하기 전에 네트워크를 생성하고 postgres를 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644810691248&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker network create joplin
sudo docker network connect joplin postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 Joplin 컨테이너를 생성하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644809927208&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker run -d \
--name=joplin \
--network=joplin \
--restart=unless-stopped \
-p 22300:22300 \
-e APP_PORT=22300 \
-e APP_BASE_URL='app_base_url' \
-e DB_CLIENT=pg \
-e POSTGRES_PASSWORD='pg_password' \
-e POSTGRES_DATABASE='joplin' \
-e POSTGRES_USER='joplin' \
-e POSTGRES_PORT=5432 \
-e POSTGRES_HOST='postgres' \
joplin/server&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;app_base_url에는 Joplin을 위한 URL을 입력해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;https://&lt;/b&gt;나 &lt;b&gt;http://&lt;/b&gt;로 시작하는 주소를 입력해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;DuckDNS 등을 사용 중이라면 서브 도메인을 포함해서 주소(예: https://joplin.xxx.duckdns.org)를 입력해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;pg_password 부분은 PostgreSQL의 비밀번호(pg_password에 입력했던 값)를 입력해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;정상적으로 컨테이너가 실행되면 웹 브라우저에서 접속이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. Joplin 접속&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;웹 브라우저에 주소를 입력해서 Joplin에 접속하면 다음과 같이 로그인 페이지가 표시됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2_Login.png&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SkOot/btrtb1jrmnh/BOKXLdG17AmQ5R0xwvBKuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SkOot/btrtb1jrmnh/BOKXLdG17AmQ5R0xwvBKuK/img.png&quot; data-alt=&quot;Joplin&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SkOot/btrtb1jrmnh/BOKXLdG17AmQ5R0xwvBKuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSkOot%2Fbtrtb1jrmnh%2FBOKXLdG17AmQ5R0xwvBKuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;688&quot; height=&quot;599&quot; data-filename=&quot;2_Login.png&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;599&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Joplin&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본 계정 정보는 Email이 &lt;b&gt;admin@localhost&lt;/b&gt;이고 비밀번호가 &lt;b&gt;admin&lt;/b&gt;입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본 계정은 보안에 취약하기 때문에 로그인을 한 후 바로 계정 정보를 변경해줘야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3_Change.png&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;797&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbXObs/btrs72qAiqs/T2sx9iHu7vuuX5oOzK8Ft1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbXObs/btrs72qAiqs/T2sx9iHu7vuuX5oOzK8Ft1/img.png&quot; data-alt=&quot;비밀번호 변경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbXObs/btrs72qAiqs/T2sx9iHu7vuuX5oOzK8Ft1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbXObs%2Fbtrs72qAiqs%2FT2sx9iHu7vuuX5oOzK8Ft1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;688&quot; height=&quot;797&quot; data-filename=&quot;3_Change.png&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;797&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;비밀번호 변경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;화면의 &lt;b&gt;Change it now&lt;/b&gt; 버튼을 클릭해서 계정 정보를 변경해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;4_Update.png&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;659&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqz7zS/btrs7FIMs8Q/juSKaWDH2229Ofr3bfXNv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqz7zS/btrs7FIMs8Q/juSKaWDH2229Ofr3bfXNv0/img.png&quot; data-alt=&quot;프로필 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqz7zS/btrs7FIMs8Q/juSKaWDH2229Ofr3bfXNv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdqz7zS%2Fbtrs7FIMs8Q%2FjuSKaWDH2229Ofr3bfXNv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1028&quot; height=&quot;659&quot; data-filename=&quot;4_Update.png&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;659&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로필 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span&gt;각 필드에 값들을 입력해주고 &lt;b&gt;Update profile&lt;/b&gt; 버튼을 클릭합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Full name&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이름&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Email&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;계정으로 사용할 이메일 주소&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Password&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비밀번호&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Repeat password&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비밀번호 재입력&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이메일 주소를 변경하면 해당 이메일로 확인 메일이 보내진다고 하는데 전송이 안됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5_Confirm.png&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Suf4n/btrtfE2V54y/BEFnrbPwmvJYzosaue4G10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Suf4n/btrtfE2V54y/BEFnrbPwmvJYzosaue4G10/img.png&quot; data-alt=&quot;확인 이메일 전송&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Suf4n/btrtfE2V54y/BEFnrbPwmvJYzosaue4G10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSuf4n%2FbtrtfE2V54y%2FBEFnrbPwmvJYzosaue4G10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;955&quot; height=&quot;86&quot; data-filename=&quot;5_Confirm.png&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;확인 이메일 전송&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 경우 DB에 접속해서 직접 링크를 가져오면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 아래 명령어로 DB에 연결합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644823847169&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker exec -it postgres psql -U joplin -d joplin&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;DB에 접속한 후에 아래 명령어로 테이블 목록을 확인합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644823893853&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;\dt&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같이 테이블 목록이 표시됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;6_Tables.png&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BWt99/btrtifvktkD/yQPBagFKVCfKgFJk7SE7H1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BWt99/btrtifvktkD/yQPBagFKVCfKgFJk7SE7H1/img.png&quot; data-alt=&quot;테이블 목록&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BWt99/btrtifvktkD/yQPBagFKVCfKgFJk7SE7H1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBWt99%2FbtrtifvktkD%2FyQPBagFKVCfKgFJk7SE7H1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;477&quot; height=&quot;608&quot; data-filename=&quot;6_Tables.png&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;테이블 목록&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래 명령어로 emails 테이블의 내용을 확인합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644823980483&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select * from emails;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;테이블의 body가&amp;nbsp;&lt;b&gt;[Confirm email]&lt;/b&gt;로 시작하는 부분을 보면 링크가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;링크 부분을 복사해서 웹 브라우저에 연결하면 계정 변경이 완료됩니다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block; text-align: center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-6598061204302497&quot; data-ad-slot=&quot;8320619864&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;계정 확인이 완료되었으면 아래 명령어로 psql을 빠져나오면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644824726560&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;\q&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 새로운 계정과 비밀번호로 접속이 가능해집니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본 계정과 비밀번호는 보안에 취약할 수 있기 때문에 새로운 계정을 입력해서 사용하는 것을 추천합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4. 앱 다운로드 및 동기화 설정&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span&gt;아래 링크에서 PC, 안드로이드, 아이폰 앱 등을 다운로드할 수 있습니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://joplinapp.org/help/#installation&quot;&gt;Joplin - an open source note taking and to-do application with synchronisation capabilities (joplinapp.org)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644825121191&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Joplin - an open source note taking and to-do application with synchronisation capabilities&quot; data-og-description=&quot;Running in prod mode! Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or &quot; data-og-host=&quot;joplinapp.org&quot; data-og-source-url=&quot;https://joplinapp.org/help/#installation&quot; data-og-url=&quot;https://joplinapp.org/help/#installation&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://joplinapp.org/help/#installation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://joplinapp.org/help/#installation&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Joplin - an open source note taking and to-do application with synchronisation capabilities&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Running in prod mode! Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;joplinapp.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;원하는 앱을 설치한 후 동기화 설정을 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;7_App.png&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buseih/btrtfE9Kv3r/d6L59OXkTRlb9QGUkviQpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buseih/btrtfE9Kv3r/d6L59OXkTRlb9QGUkviQpk/img.png&quot; data-alt=&quot;동기화 설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buseih/btrtfE9Kv3r/d6L59OXkTRlb9QGUkviQpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbuseih%2FbtrtfE9Kv3r%2Fd6L59OXkTRlb9QGUkviQpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;675&quot; height=&quot;752&quot; data-filename=&quot;7_App.png&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;동기화 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;각 부분을 입력하고 &lt;b&gt;Check synchronisation configuration&lt;/b&gt; 버튼을 눌러서 확인하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Synchronisation target&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Joplin Server (Beta)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Joplin Server URL&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Joplin 서버 주소&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Joplin Server email&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;계정(이메일 주소)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Joplin Server password&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;계정 비밀번호&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;값들을 입력하고 버튼을 눌렀을 때 Success!가 표시되면 정상적으로 동기화 설정이 완료된 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다른 기기에서 동일하게 동기화를 설정하면 메모들이 동기화되어 표시되는 것을 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 Joplin 설정이 완료됩니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/NAS</category>
      <category>docker</category>
      <category>Joplin</category>
      <category>note-taking</category>
      <category>ubuntu</category>
      <category>노트 앱</category>
      <category>도커</category>
      <category>메모 프로그램</category>
      <category>메모작성</category>
      <category>우분투</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/784</guid>
      <comments>https://psychoria.tistory.com/784#entry784comment</comments>
      <pubDate>Fri, 18 Feb 2022 17:00:37 +0900</pubDate>
    </item>
    <item>
      <title>[자작NAS] 우분투 서버에 Docker로 PostgreSQL 설치</title>
      <link>https://psychoria.tistory.com/783</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;PostgreSQL은 오픈소스 데이터베이스 시스템입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;PostgreSQL_logo.3colors.120x120.png&quot; data-origin-width=&quot;120&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TaXNp/btrtjOXUSRD/1pmgKDx2ZFDges52YKsKM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TaXNp/btrtjOXUSRD/1pmgKDx2ZFDges52YKsKM1/img.png&quot; data-alt=&quot;PostgreSQL&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TaXNp/btrtjOXUSRD/1pmgKDx2ZFDges52YKsKM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTaXNp%2FbtrtjOXUSRD%2F1pmgKDx2ZFDges52YKsKM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;120&quot; height=&quot;120&quot; data-filename=&quot;PostgreSQL_logo.3colors.120x120.png&quot; data-origin-width=&quot;120&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;PostgreSQL&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MySQL이나 MS-SQL와 같이 데이터를 저장하고 읽어오는 데 사용됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;PostgreSQL은 데이터베이스 연동을 필요로 하는 다양한 프로그램에 활용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Docker를 통해 PostgreSQL을 설치하는 방법을 알아보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. Docker로 PostgreSQL 컨테이너 생성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 데이터를 저장할 디렉토리를 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644740702731&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo mkdir -p /data/postgres/data&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;PostgreSQL 공식 이미지를 사용해서 컨테이너를 생성하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644740869933&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker run -d \
--name=postgres \
-e POSTGRES_PASSWORD='mysecretpassword' \
-v /data/postgres/data:/var/lib/postgresql/data \
postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;명령어의 mysecretpassword 부분은 실제 사용을 원하는 비밀번호를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본 사용자는 postgres로 생성됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컨테이너를 생성할 때 기본 사용자명이나 기본 데이터베이스 이름을 변경할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래 환경 변수들을 사용해서 기본 값을 지정할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.5814%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;POSTGRES_USER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.4186%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용자명 설정 (기본값: postgres)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.5814%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;POSTGRES_DB&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 79.4186%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본 데이터베이스 이름 설정 (기본값: POSTGRES_USER 값)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;둘 다 입력하지 않으면 postgres라는 이름으로 기본 사용자와 데이터베이스가 각각 생성됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Docker Compose로 설치하려는 경우 docker-compose.yml에 &lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt;PostgreSQL 관련 내용을 추가합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690353334899&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano ~/docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 내용을 추가하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1690353232741&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: &quot;3.9&quot;
services:
  postgres:
    image: postgres
    container_name: postgres
    env_file: .env
    environment:
      - POSTGRES_PASSWORD=${POSTGRESQL_PASSWORD}
    volumes:
      - ${POSTGRESQL_PATH}/data:/var/lib/postgresql/data
    restart: unless-stopped&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 POSTGRESQL_PASSWORD와 POSTGRESQL_PATH를 .env에 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1690353404666&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nano ~/.env&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 추가하고 비밀번호 부분은 원하는 비밀번호로 변경하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1690353452850&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# PostgreSQL
POSTGRESQL_PASSWORD=비밀번호
POSTGRESQL_PATH=/data/postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정이 완료되면 컨테이너를 실행하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1690353486903&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker compose up -d postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도커 CLI나 Docker Compose 중 한 가지 방식을 선택해서 실행하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. PostgreSQL 접속&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컨테이너의 psql 명령어를 실행해서 PostgreSQL에 접속할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644742784148&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker exec -it postgres psql -U postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;명령어의 -U &lt;b&gt;postgres&lt;/b&gt; 부분은 사용자명을 나타냅니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 별도의 값(POSTGRES_USER)을 입력했었던 경우 해당 사용자명을 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block; text-align: center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-6598061204302497&quot; data-ad-slot=&quot;8320619864&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;데이터베이스 목록을 확인하려면 아래 명령어를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644743033303&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;\l&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본적으로 POSTGRES_USER와 POSTGRES_DB를 지정하지 않았으면 아래와 같이 데이터베이스가 표시됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_Database.png&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eyyUWH/btrs9ieKtQG/KfBHckxtOvilICHZfgx2g1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eyyUWH/btrs9ieKtQG/KfBHckxtOvilICHZfgx2g1/img.png&quot; data-alt=&quot;데이터베이스 목록&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eyyUWH/btrs9ieKtQG/KfBHckxtOvilICHZfgx2g1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeyyUWH%2Fbtrs9ieKtQG%2FKfBHckxtOvilICHZfgx2g1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;783&quot; height=&quot;239&quot; data-filename=&quot;1_Database.png&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;239&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터베이스 목록&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;psql을 빠져나가려면 아래 명령어를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644743119904&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;\q&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 PostgreSQL이 정상적으로 설치된 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. 계정 비밀번호 변경&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span&gt;계정의 비밀번호를 변경해야 하는 경우 &lt;b&gt;\password 계정명&lt;/b&gt;을 입력하면 됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 DB에 연결하기 위해서 아래와 같이 명령어를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644743711077&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker exec -it postgres psql -U postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비밀번호를 변경하기 위해 아래와 같이 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644743775302&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;\password 계정이름&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;원하는 비밀번호를 동일하게 2번 입력하면 비밀번호가 변경됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2_Password.png&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDdlVy/btrs9L8xrsQ/EoFJ9d3OHDd34OC9ESYTp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDdlVy/btrs9L8xrsQ/EoFJ9d3OHDd34OC9ESYTp1/img.png&quot; data-alt=&quot;비밀번호 변경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDdlVy/btrs9L8xrsQ/EoFJ9d3OHDd34OC9ESYTp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDdlVy%2Fbtrs9L8xrsQ%2FEoFJ9d3OHDd34OC9ESYTp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;482&quot; height=&quot;102&quot; data-filename=&quot;2_Password.png&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;비밀번호 변경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비밀번호를 변경하고 \q를 입력하면 빠져나오게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 PostgreSQL 설치가 완료됩니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/NAS</category>
      <category>DATABASE</category>
      <category>DB</category>
      <category>DBMS</category>
      <category>docker</category>
      <category>PostgreSQL</category>
      <category>ubuntu</category>
      <category>데이터베이스</category>
      <category>도커</category>
      <category>우분투</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/783</guid>
      <comments>https://psychoria.tistory.com/783#entry783comment</comments>
      <pubDate>Mon, 14 Feb 2022 17:00:51 +0900</pubDate>
    </item>
    <item>
      <title>[자작NAS] 우분투 서버에 Docker로 rclone 설치 및 구글 드라이브 연동</title>
      <link>https://psychoria.tistory.com/782</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://rclone.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;rclone&lt;/a&gt;은 클라우드 스토리지 서비스를 연동하기 위한 툴입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;logo_on_light__horizontal_color.svg&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;69&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kSsLZ/btrsytA2a7B/rRCOZQbingNnCxZVFklFIK/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kSsLZ/btrsytA2a7B/rRCOZQbingNnCxZVFklFIK/tfile.svg&quot; data-alt=&quot;RCLONE&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kSsLZ/btrsytA2a7B/rRCOZQbingNnCxZVFklFIK/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkSsLZ%2FbtrsytA2a7B%2FrRCOZQbingNnCxZVFklFIK%2Ftfile.svg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;69&quot; data-filename=&quot;logo_on_light__horizontal_color.svg&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;69&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;RCLONE&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;구글 드라이브, 원드라이브, 드롭박스 등의 다양한 클라우드 스토리지 서비스를 지원합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사이트에서 대부분의 스토리지 서비스 연동을 지원하는 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우분투 서버에서 Docker를 통해 구글 드라이브 암호화 연동은 아래 링크에서 확인 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://psychoria.tistory.com/781&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.12.14 - [IT/NAS] - [자작NAS] 우분투 서버에 Docker로 rclone 설치 및 구글 드라이브 암호화 연동&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644115344002&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[자작NAS] 우분투 서버에 Docker로 rclone 설치 및 구글 드라이브 암호화 연동&quot; data-og-description=&quot;rclone은 다양한 클라우드 스토리지를 연동해서 사용할 수 있게 해 줍니다. 구글 드라이브(Google Drive), 원드라이브(OneDrive), 드롭박스(Dropbox) 등 유명 클라우드 스토리지를 지원합니다. rclone을 통해 &quot; data-og-host=&quot;psychoria.tistory.com&quot; data-og-source-url=&quot;https://psychoria.tistory.com/781&quot; data-og-url=&quot;https://psychoria.tistory.com/781&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bmvx4z/hyNjMfF6wl/35hT9EK5aXxbk318koVwQ0/img.jpg?width=226&amp;amp;height=52&amp;amp;face=0_0_226_52,https://scrap.kakaocdn.net/dn/wR74B/hyNjHyFPnh/7tMfiUYLikNgPIBpA6VRYK/img.jpg?width=226&amp;amp;height=52&amp;amp;face=0_0_226_52,https://scrap.kakaocdn.net/dn/bsBW14/hyNlss673i/YapWak0hHYFu7U83xno2kk/img.png?width=1302&amp;amp;height=2093&amp;amp;face=0_0_1302_2093&quot;&gt;&lt;a href=&quot;https://psychoria.tistory.com/781&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://psychoria.tistory.com/781&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bmvx4z/hyNjMfF6wl/35hT9EK5aXxbk318koVwQ0/img.jpg?width=226&amp;amp;height=52&amp;amp;face=0_0_226_52,https://scrap.kakaocdn.net/dn/wR74B/hyNjHyFPnh/7tMfiUYLikNgPIBpA6VRYK/img.jpg?width=226&amp;amp;height=52&amp;amp;face=0_0_226_52,https://scrap.kakaocdn.net/dn/bsBW14/hyNlss673i/YapWak0hHYFu7U83xno2kk/img.png?width=1302&amp;amp;height=2093&amp;amp;face=0_0_1302_2093');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[자작NAS] 우분투 서버에 Docker로 rclone 설치 및 구글 드라이브 암호화 연동&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;rclone은 다양한 클라우드 스토리지를 연동해서 사용할 수 있게 해 줍니다. 구글 드라이브(Google Drive), 원드라이브(OneDrive), 드롭박스(Dropbox) 등 유명 클라우드 스토리지를 지원합니다. rclone을 통해&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;psychoria.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 암호화하지 않고 구글 드라이브를 연동하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. Docker 컨테이너 생성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;암호화 없이 구글 드라이브를 연동하는 경우 기존에 업로드했던 파일들을 그대로 사용할 수 있는 장점이 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래 명령어로 필요한 디렉토리를 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644115755843&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo mkdir -p /data/rclone_gdrive/config
sudo mkdir -p /data/rclone_gdrive/log
sudo mkdir -p /data/rclone_gdrive/cache

sudo mkdir -p /data/rclone_gdrive/mergerfs
sudo chmod -R 777 /data/rclone_gdrive/mergerfs

sudo mkdir -p /mnt/rclone_gdrive&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 설정이나 캐시 등을 저장할 공간을 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;mergerfs는 로컬 디렉토리와 구글 드라이브 디렉토리를 합쳐서 보여주는 역할을 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 연동을 마친 후 mergerfs에 파일을 옮겨두면 자동으로 구글 드라이브에 업로드가 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래 명령어로 rclone 컨테이너를 실행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644116635750&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker run -d \
--name=rclone_gdrive \
--net=bridge \
-v /data/rclone_gdrive/config:/config \
-v /data/rclone_gdrive/log:/log \
-v /data/rclone_gdrive/cache:/cache \
-v /mnt/rclone_gdrive:/data:shared \
-v /data/rclone_gdrive/mergerfs:/local \
--privileged=true \
--device /dev/fuse \
--cap-add=MKNOD \
--cap-add=SYS_ADMIN \
-e PGID=$(id -g $USER) \
-e PUID=$UID \
-e TZ=Asia/Seoul \
-e RCLONE_REMOTE_PATH=gdrive: \
-e RCLONE_MOUNT_USER_OPTS=&quot;--allow-non-empty --fast-list --drive-skip-gdocs --poll-interval=15s \
--vfs-cache-mode full --vfs-write-back 5s --bwlimit-file 16M --buffer-size=16M --vfs-read-chunk-size=32M \
--vfs-read-chunk-size-limit 2048M --vfs-cache-max-size 24G --vfs-cache-max-age 336h --vfs-read-ahead 32M \
--dir-cache-time=1000h --timeout 1h&quot; \
-e MFS_USER_OPTS=&quot;rw,async_read=false,use_ino,allow_other,nonempty,func.getattr=newest,\
category.action=all,category.create=ff,cache.files=partial,dropcacheonclose=true&quot; \
-e MOVE_LOCAL_ALL=true \
-e KEEP_EMPTY_DIRS=1 \
-e MOVE_LOCAL_SCHEDULE=&quot;0 * * * *&quot; \
-e DATE_FORMAT=&quot;--iso-8601=seconds&quot; \
-e POOLING_FS=mergerfs \
--restart=unless-stopped \
wiserain/rclone&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;환경 설정에 추가된 몇 가지 옵션에 대한 설명은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MOVE_LOCAL_ALL&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.4884%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;로컬 디렉토리의 파일을 구글 드라이브로 전부 이동&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;KEEP_EMPTY_DIRS&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.4884%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;로컬 디렉토리의 파일을 전부 이동한 후에도 로컬에 빈 디렉토리를 유지&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MOVE_LOCAL_SCHEDULE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.4884%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;로컬 디렉토리의 파일을 구글 드라이브로 이동하는 작업 스케줄 적용 (여기서는 매 정각마다 실행)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정에 따라 로컬 디렉토리(mergerfs)에 파일을 복사하면 1시간마다 구글 드라이브에 업로드됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스케줄을 변경하고 싶으면 MOVE_LOCAL_SCHEDULE의 값을 변경하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;crontab 스케줄 작성은 아래 링크에서 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://crontab.guru/&quot;&gt;Crontab.guru - The cron schedule expression editor&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컨테이너 동작 후 아래 명령어를 실행해서 몇 가지 설정을 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644117570793&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker exec -it rclone_gdrive rclone_setup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 구글 드라이브 연동을 위한 설정을 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 구글 드라이브 연동&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;구글 드라이브 연동을 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644117847172&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;새로운 연결을 생성하기 위해 n을 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_New.png&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JOAaj/btrswU7cPJ8/E0kWJ8VDjPFtAPmaNUwVGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JOAaj/btrswU7cPJ8/E0kWJ8VDjPFtAPmaNUwVGK/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JOAaj/btrswU7cPJ8/E0kWJ8VDjPFtAPmaNUwVGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJOAaj%2FbtrswU7cPJ8%2FE0kWJ8VDjPFtAPmaNUwVGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;528&quot; height=&quot;112&quot; data-filename=&quot;1_New.png&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;112&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 이름을 입력하는데 RCLONE_REMOTE_PATH의 값인 &lt;b&gt;gdrive&lt;/b&gt;(gdrive:에서 : 제거)를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644117973363&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2_Name.png&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;25&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BKzGG/btrsvfjyEdw/87fYyb6pX028zWSsdjpAtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BKzGG/btrsvfjyEdw/87fYyb6pX028zWSsdjpAtk/img.png&quot; data-alt=&quot;gdrive&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BKzGG/btrsvfjyEdw/87fYyb6pX028zWSsdjpAtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBKzGG%2FbtrsvfjyEdw%2F87fYyb6pX028zWSsdjpAtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;367&quot; height=&quot;25&quot; data-filename=&quot;2_Name.png&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;25&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;gdrive&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 클라우드 스토리지 서비스를 선택합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644118112814&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option Storage.
Type of storage to configure.
Enter a string value. Press Enter for the default (&quot;&quot;).
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ &quot;fichier&quot;
 2 / Alias for an existing remote
   \ &quot;alias&quot;
 3 / Amazon Drive
   \ &quot;amazon cloud drive&quot;
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
   \ &quot;s3&quot;
 5 / Backblaze B2
   \ &quot;b2&quot;
 6 / Better checksums for other remotes
   \ &quot;hasher&quot;
 7 / Box
   \ &quot;box&quot;
 8 / Cache a remote
   \ &quot;cache&quot;
 9 / Citrix Sharefile
   \ &quot;sharefile&quot;
10 / Compress a remote
   \ &quot;compress&quot;
11 / Dropbox
   \ &quot;dropbox&quot;
12 / Encrypt/Decrypt a remote
   \ &quot;crypt&quot;
13 / Enterprise File Fabric
   \ &quot;filefabric&quot;
14 / FTP Connection
   \ &quot;ftp&quot;
15 / Google Cloud Storage (this is not Google Drive)
   \ &quot;google cloud storage&quot;
16 / Google Drive
   \ &quot;drive&quot;
17 / Google Photos
   \ &quot;google photos&quot;
18 / Hadoop distributed file system
   \ &quot;hdfs&quot;
19 / Hubic
   \ &quot;hubic&quot;
20 / In memory object storage system.
   \ &quot;memory&quot;
21 / Jottacloud
   \ &quot;jottacloud&quot;
22 / Koofr
   \ &quot;koofr&quot;
23 / Local Disk
   \ &quot;local&quot;
24 / Mail.ru Cloud
   \ &quot;mailru&quot;
25 / Mega
   \ &quot;mega&quot;
26 / Microsoft Azure Blob Storage
   \ &quot;azureblob&quot;
27 / Microsoft OneDrive
   \ &quot;onedrive&quot;
28 / OpenDrive
   \ &quot;opendrive&quot;
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ &quot;swift&quot;
30 / Pcloud
   \ &quot;pcloud&quot;
31 / Put.io
   \ &quot;putio&quot;
32 / QingCloud Object Storage
   \ &quot;qingstor&quot;
33 / SSH/SFTP Connection
   \ &quot;sftp&quot;
34 / Sia Decentralized Cloud
   \ &quot;sia&quot;
35 / Sugarsync
   \ &quot;sugarsync&quot;
36 / Tardigrade Decentralized Cloud Storage
   \ &quot;tardigrade&quot;
37 / Transparently chunk/split large files
   \ &quot;chunker&quot;
38 / Union merges the contents of several upstream fs
   \ &quot;union&quot;
39 / Uptobox
   \ &quot;uptobox&quot;
40 / Webdav
   \ &quot;webdav&quot;
41 / Yandex Disk
   \ &quot;yandex&quot;
42 / Zoho
   \ &quot;zoho&quot;
43 / http Connection
   \ &quot;http&quot;
44 / premiumize.me
   \ &quot;premiumizeme&quot;
45 / seafile
   \ &quot;seafile&quot;
Storage&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 &lt;b&gt;drive&lt;/b&gt;를 입력해서 구글 드라이브를 선택합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3_Drive.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;2093&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dpqVuU/btrsyt17fhk/f6SXt2F8d0CyLUTIonfYcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dpqVuU/btrsyt17fhk/f6SXt2F8d0CyLUTIonfYcK/img.png&quot; data-alt=&quot;drive&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dpqVuU/btrsyt17fhk/f6SXt2F8d0CyLUTIonfYcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdpqVuU%2Fbtrsyt17fhk%2Ff6SXt2F8d0CyLUTIonfYcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1302&quot; height=&quot;2093&quot; data-filename=&quot;3_Drive.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;2093&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;drive&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;서비스가 추가될 때마다 번호가 바뀔 수 있기 때문에 숫자 대신 &lt;b&gt;drive&lt;/b&gt;를 입력하는 것이 확실합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 클라이언트 ID를 입력하는 과정입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644118254409&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default (&quot;&quot;).
client_id&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클라이언트 ID와 시크릿을 생성하는 방법은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://psychoria.tistory.com/674&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2019.01.11 - [IT/Tip&amp;amp;Tech] - 구글 드라이브 API(Google Drive API) 활성화 방법&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644118287495&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;구글 드라이브 API(Google Drive API) 활성화 방법&quot; data-og-description=&quot;약간의 월 비용을 지불하고 G Suite 서비스를 사용하면 무제한 구글 드라이브 용량이 제공됩니다. 구글 드라이브 무제한을 활용해서 PLEX와 연동시켜서 사용할 수 있습니다. Plexdrive는 구글 드라이&quot; data-og-host=&quot;psychoria.tistory.com&quot; data-og-source-url=&quot;https://psychoria.tistory.com/674&quot; data-og-url=&quot;https://psychoria.tistory.com/674&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/IhBYL/hyNleaz9Jj/aMq29KbQ6IKBDRha1mxZS1/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544,https://scrap.kakaocdn.net/dn/djtKQA/hyNjFHDodT/trcibBRcbRd0TC1Nn4edd1/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544,https://scrap.kakaocdn.net/dn/bHG0cf/hyNllgtw4d/KLj5usMgASDeDuxKRAvvK0/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544&quot;&gt;&lt;a href=&quot;https://psychoria.tistory.com/674&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://psychoria.tistory.com/674&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/IhBYL/hyNleaz9Jj/aMq29KbQ6IKBDRha1mxZS1/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544,https://scrap.kakaocdn.net/dn/djtKQA/hyNjFHDodT/trcibBRcbRd0TC1Nn4edd1/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544,https://scrap.kakaocdn.net/dn/bHG0cf/hyNllgtw4d/KLj5usMgASDeDuxKRAvvK0/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;구글 드라이브 API(Google Drive API) 활성화 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;약간의 월 비용을 지불하고 G Suite 서비스를 사용하면 무제한 구글 드라이브 용량이 제공됩니다. 구글 드라이브 무제한을 활용해서 PLEX와 연동시켜서 사용할 수 있습니다. Plexdrive는 구글 드라이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;psychoria.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;방법이 조금 달라졌지만 참조해서 클라이언트 ID와 시크릿을 생성하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;생성된 클라이언트 ID를 복사한 후 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;4_ClientID.png&quot; data-origin-width=&quot;2257&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5Oukm/btrszlv1o9e/y1o4kyn9UXa07JMn0JMYhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5Oukm/btrszlv1o9e/y1o4kyn9UXa07JMn0JMYhk/img.png&quot; data-alt=&quot;Client ID&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5Oukm/btrszlv1o9e/y1o4kyn9UXa07JMn0JMYhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5Oukm%2Fbtrszlv1o9e%2Fy1o4kyn9UXa07JMn0JMYhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2257&quot; height=&quot;488&quot; data-filename=&quot;4_ClientID.png&quot; data-origin-width=&quot;2257&quot; data-origin-height=&quot;488&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client ID&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클라이언트 ID는 보통 apps.googleusercontent.com으로 끝나는 구조로 되어 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5_ClientID.png&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cANCUx/btrstXW4Rz6/MZ7S9wDVgKOPWNhKkVUVsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cANCUx/btrstXW4Rz6/MZ7S9wDVgKOPWNhKkVUVsK/img.png&quot; data-alt=&quot;Client ID 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cANCUx/btrstXW4Rz6/MZ7S9wDVgKOPWNhKkVUVsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcANCUx%2FbtrstXW4Rz6%2FMZ7S9wDVgKOPWNhKkVUVsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;803&quot; height=&quot;156&quot; data-filename=&quot;5_ClientID.png&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client ID 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 시크릿(Secret)을 입력하는 단계입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644118795758&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a string value. Press Enter for the default (&quot;&quot;).
client_secret&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 값은 Client ID 값 옆의 연필 모양 아이콘(Edit OAuth client)을 누르면 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;6_Secret.png&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfB7gZ/btrsysa6Svc/sxpywGKT0gY3YyKCxn0tNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfB7gZ/btrsysa6Svc/sxpywGKT0gY3YyKCxn0tNk/img.png&quot; data-alt=&quot;Client secret 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfB7gZ/btrsysa6Svc/sxpywGKT0gY3YyKCxn0tNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfB7gZ%2Fbtrsysa6Svc%2FsxpywGKT0gY3YyKCxn0tNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1370&quot; height=&quot;140&quot; data-filename=&quot;6_Secret.png&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client secret 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;공백 등이 포함되지 않았는지 확인한 후에 값을 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;7_Secret.png&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AB7hS/btrstK47Zvb/AEykADrLP1gGJMcxtdK3I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AB7hS/btrstK47Zvb/AEykADrLP1gGJMcxtdK3I1/img.png&quot; data-alt=&quot;Client secret&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AB7hS/btrstK47Zvb/AEykADrLP1gGJMcxtdK3I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAB7hS%2FbtrstK47Zvb%2FAEykADrLP1gGJMcxtdK3I1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;510&quot; height=&quot;112&quot; data-filename=&quot;7_Secret.png&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;112&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client secret&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파일 접근 권한은 모든 파일에 접근할 수 있도록 설정합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644118908397&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option scope.
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default (&quot;&quot;).
Choose a number from below, or type in your own value.
 1 / Full access all files, excluding Application Data Folder.
   \ &quot;drive&quot;
 2 / Read-only access to file metadata and file contents.
   \ &quot;drive.readonly&quot;
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ &quot;drive.file&quot;
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ &quot;drive.appfolder&quot;
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ &quot;drive.metadata.readonly&quot;
scope&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 파일에 대해서 접근 권한을 얻기 위해 &lt;b&gt;drive&lt;/b&gt;를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;8_Access.png&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byVexP/btrsqCzntEl/e9JkHJb8AmXYofwgMi0LcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byVexP/btrsqCzntEl/e9JkHJb8AmXYofwgMi0LcK/img.png&quot; data-alt=&quot;drive&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byVexP/btrsqCzntEl/e9JkHJb8AmXYofwgMi0LcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyVexP%2FbtrsqCzntEl%2Fe9JkHJb8AmXYofwgMi0LcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;798&quot; height=&quot;420&quot; data-filename=&quot;8_Access.png&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;drive&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 루트 폴더를 설정하는 내용인데 그냥 엔터를 눌러서 구글 드라이브의 루트를 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644119494301&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option root_folder_id.
ID of the root folder.
Leave blank normally.
Fill in to access &quot;Computers&quot; folders (see docs), or for rclone to use
a non root folder as its starting point.
Enter a string value. Press Enter for the default (&quot;&quot;).
root_folder_id&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9_Root.png&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nJJLq/btrswU0s8qE/Vehob16WKjUk4ytH8hqZ41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nJJLq/btrswU0s8qE/Vehob16WKjUk4ytH8hqZ41/img.png&quot; data-alt=&quot;엔터 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nJJLq/btrswU0s8qE/Vehob16WKjUk4ytH8hqZ41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnJJLq%2FbtrswU0s8qE%2FVehob16WKjUk4ytH8hqZ41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;727&quot; height=&quot;157&quot; data-filename=&quot;9_Root.png&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;엔터 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;아무것도 입력하지 않고 엔터를 입력&lt;/b&gt;하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 Service Account Credentials JSON 설정으로 동일하게 바로 엔터를 눌러서 넘어가면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644119596480&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option service_account_file.
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a string value. Press Enter for the default (&quot;&quot;).
service_account_file&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10_Json.png&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgXGlp/btrsxiGk0KD/eR7znVJs7P1wqJ5gP7c380/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgXGlp/btrsxiGk0KD/eR7znVJs7P1wqJ5gP7c380/img.png&quot; data-alt=&quot;엔터 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgXGlp/btrsxiGk0KD/eR7znVJs7P1wqJ5gP7c380/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgXGlp%2FbtrsxiGk0KD%2FeR7znVJs7P1wqJ5gP7c380%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;984&quot; height=&quot;156&quot; data-filename=&quot;10_Json.png&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;엔터 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;상세 설정은 &lt;b&gt;n&lt;/b&gt;을 눌러서 스킵하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644119655354&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Edit advanced config?
y) Yes
n) No (default)
y/n&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11_Settings.png&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GiJMV/btrstYn4Pit/AvrSwfCkmnqBuZ435V4qrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GiJMV/btrstYn4Pit/AvrSwfCkmnqBuZ435V4qrk/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GiJMV/btrstYn4Pit/AvrSwfCkmnqBuZ435V4qrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGiJMV%2FbtrstYn4Pit%2FAvrSwfCkmnqBuZ435V4qrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;352&quot; height=&quot;94&quot; data-filename=&quot;11_Settings.png&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 자동 설정 진행 여부입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644119723259&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일반적으로 SSH 연결 상태에서 작업을 진행하기 때문에 &lt;b&gt;n&lt;/b&gt;을 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12_AutoConfig.png&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o2Uy9/btrswVLTc0W/kctdGUcQ24wFAHLhKzTfHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o2Uy9/btrswVLTc0W/kctdGUcQ24wFAHLhKzTfHk/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o2Uy9/btrswVLTc0W/kctdGUcQ24wFAHLhKzTfHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo2Uy9%2FbtrswVLTc0W%2FkctdGUcQ24wFAHLhKzTfHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;585&quot; height=&quot;155&quot; data-filename=&quot;12_AutoConfig.png&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;화면에 링크가 표시되는데 이 링크를 복사해서 웹 브라우저 주소창에 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644119805388&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option config_verification_code.
Verification code
Go to this URL, authenticate then paste the code here.
https://accounts.google.com/o/oauth2/auth
Enter a string value. Press Enter for the default (&quot;&quot;).
config_verification_code&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;권한을 요청하는 창이 표시되면 &lt;b&gt;Allow&lt;/b&gt;를 클릭합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;13_Allow.png&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/twdV4/btrsxf4p2B3/4kUBlNdmUQxK8s5k1ygh5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/twdV4/btrsxf4p2B3/4kUBlNdmUQxK8s5k1ygh5K/img.png&quot; data-alt=&quot;Allow&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/twdV4/btrsxf4p2B3/4kUBlNdmUQxK8s5k1ygh5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtwdV4%2Fbtrsxf4p2B3%2F4kUBlNdmUQxK8s5k1ygh5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;456&quot; height=&quot;650&quot; data-filename=&quot;13_Allow.png&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Allow&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 화면에 표시되는 코드를 복사해서 config_verification_code에 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;14_Code.png&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;509&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9nD2V/btrsC99F0hn/M0ip191xXHNxKeGKkibxC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9nD2V/btrsC99F0hn/M0ip191xXHNxKeGKkibxC0/img.png&quot; data-alt=&quot;코드 복사 및 붙여넣기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9nD2V/btrsC99F0hn/M0ip191xXHNxKeGKkibxC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9nD2V%2FbtrsC99F0hn%2FM0ip191xXHNxKeGKkibxC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;509&quot; data-filename=&quot;14_Code.png&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;509&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;코드 복사 및 붙여넣기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 팀 드라이브 설정 여부입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644119969841&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Configure this as a Shared Drive (Team Drive)?

y) Yes
n) No (default)
y/n&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;개인 드라이브를 연동하기 위해 n을 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15_TeamDrive.png&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHofdf/btrsxDYhIxZ/E4l01KYMMNbf6QCZwUSiCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHofdf/btrsxDYhIxZ/E4l01KYMMNbf6QCZwUSiCK/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHofdf/btrsxDYhIxZ/E4l01KYMMNbf6QCZwUSiCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHofdf%2FbtrsxDYhIxZ%2FE4l01KYMMNbf6QCZwUSiCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;457&quot; height=&quot;116&quot; data-filename=&quot;15_TeamDrive.png&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 것이 제대로 입력되었으면 설정을 완료합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644120045335&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 &lt;b&gt;y&lt;/b&gt;를 누르면 설정이 완료됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;16_Save.png&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w3sXe/btrsA7EgUUE/qRK5KmRf8HqWRnOuqG1aKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w3sXe/btrsA7EgUUE/qRK5KmRf8HqWRnOuqG1aKK/img.png&quot; data-alt=&quot;y&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w3sXe/btrsA7EgUUE/qRK5KmRf8HqWRnOuqG1aKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw3sXe%2FbtrsA7EgUUE%2FqRK5KmRf8HqWRnOuqG1aKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;338&quot; height=&quot;97&quot; data-filename=&quot;16_Save.png&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;y&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;추가한 gdrive가 목록에 표시된 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644120131830&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Current remotes:

Name                 Type
====                 ====
gdrive               drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정을 완료했으면 &lt;b&gt;q&lt;/b&gt;를 입력해서 종료합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;17_Quit.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djMfVz/btrsytVoInZ/3Be43CcJdcDFkklin3dSt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djMfVz/btrsytVoInZ/3Be43CcJdcDFkklin3dSt1/img.png&quot; data-alt=&quot;q&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djMfVz/btrsytVoInZ/3Be43CcJdcDFkklin3dSt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjMfVz%2FbtrsytVoInZ%2F3Be43CcJdcDFkklin3dSt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;307&quot; data-filename=&quot;17_Quit.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;q&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 구글 드라이브 연동이 완료됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. 드라이브 연동 확인&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정이 완료된 이후에 구글 드라이브가 /mnt/rclone_gdrive에 연동된 것이 확인 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파일의 수에 따라 연동 완료까지는 시간이 걸릴 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644120372185&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd /mnt/rclone_gdrive/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;편리하게 로컬 디렉토리처럼 구글 드라이브의 파일과 폴더들을 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;로컬에 있는 파일을 구글 드라이브에 업로드하는 방법은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 /data/rclone_gdrive/mergerfs에 디렉토리에 파일들을 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;/data/rclone_gdrive/mergerfs/Document와 같이 추가하면 /mnt/rclone_gdrive에도 동일하게 보입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스케줄러가 매 정각에 파일들을 구글 드라이브로 전송하고 로컬의 파일을 삭제합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;편리하게 로컬 파일들을 구글 드라이브로 이동할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 구글 드라이브를 rclone으로 연동하는 작업이 완료됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/NAS</category>
      <category>cloud storage</category>
      <category>docker</category>
      <category>Google Drive</category>
      <category>nas</category>
      <category>rclone</category>
      <category>Ubuntu Server</category>
      <category>구글 드라이브</category>
      <category>도커</category>
      <category>우분투 서버</category>
      <category>클라우드 스토리지</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/782</guid>
      <comments>https://psychoria.tistory.com/782#entry782comment</comments>
      <pubDate>Tue, 8 Feb 2022 17:00:20 +0900</pubDate>
    </item>
    <item>
      <title>[자작NAS] 우분투 서버에 Docker로 rclone 설치 및 구글 드라이브 암호화 연동</title>
      <link>https://psychoria.tistory.com/781</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://rclone.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;rclone&lt;/a&gt;은 다양한 클라우드 스토리지를 연동해서 사용할 수 있게 해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;logo_on_light__horizontal_color.svg&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;69&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lf7MR/btrmXP3Y5gR/yJwHXjhlbg12gKKx8jdYH0/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lf7MR/btrmXP3Y5gR/yJwHXjhlbg12gKKx8jdYH0/tfile.svg&quot; data-alt=&quot;RCLONE&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lf7MR/btrmXP3Y5gR/yJwHXjhlbg12gKKx8jdYH0/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flf7MR%2FbtrmXP3Y5gR%2FyJwHXjhlbg12gKKx8jdYH0%2Ftfile.svg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;69&quot; data-filename=&quot;logo_on_light__horizontal_color.svg&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;69&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;RCLONE&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;구글 드라이브(Google Drive), 원드라이브(OneDrive), 드롭박스(Dropbox) 등 유명 클라우드 스토리지를 지원합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;rclone을 통해 클라우드 스토리지를 연동하면 로컬 디렉토리처럼 접근이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;특히 무제한 구글 드라이브를 연동하면 무제한의 공간을 활용하는 것이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 암호화를 지원하기 때문에 암호화된 파일명과 디렉토리명은 물론이고 내용도 암호화해서 보관할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;암호화를 하지 않고 구글 드라이브를 연동하는 방법은 아래 링크를 참조하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://psychoria.tistory.com/782&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.02.08 - [IT/NAS] - [자작NAS] 우분투 서버에 Docker로 rclone 설치 및 구글 드라이브 연동&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644732593347&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[자작NAS] 우분투 서버에 Docker로 rclone 설치 및 구글 드라이브 연동&quot; data-og-description=&quot;rclone은 클라우드 스토리지 서비스를 연동하기 위한 툴입니다. 구글 드라이브, 원드라이브, 드롭박스 등의 다양한 클라우드 스토리지 서비스를 지원합니다. 사이트에서 대부분의 스토리지 서비&quot; data-og-host=&quot;psychoria.tistory.com&quot; data-og-source-url=&quot;https://psychoria.tistory.com/782&quot; data-og-url=&quot;https://psychoria.tistory.com/782&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bl2Prt/hyNpiqXgEF/tk8HJkOwuZi4SyMpsIFmd0/img.jpg?width=226&amp;amp;height=52&amp;amp;face=0_0_226_52,https://scrap.kakaocdn.net/dn/bOhcng/hyNppp5VH2/Ci5sjxN4FeKnyYYWwaDbzk/img.jpg?width=226&amp;amp;height=52&amp;amp;face=0_0_226_52,https://scrap.kakaocdn.net/dn/oIFRP/hyNnXPvnKX/b576dTfXU1Ux8VPxbDFWz0/img.png?width=1302&amp;amp;height=2093&amp;amp;face=0_0_1302_2093&quot;&gt;&lt;a href=&quot;https://psychoria.tistory.com/782&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://psychoria.tistory.com/782&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bl2Prt/hyNpiqXgEF/tk8HJkOwuZi4SyMpsIFmd0/img.jpg?width=226&amp;amp;height=52&amp;amp;face=0_0_226_52,https://scrap.kakaocdn.net/dn/bOhcng/hyNppp5VH2/Ci5sjxN4FeKnyYYWwaDbzk/img.jpg?width=226&amp;amp;height=52&amp;amp;face=0_0_226_52,https://scrap.kakaocdn.net/dn/oIFRP/hyNnXPvnKX/b576dTfXU1Ux8VPxbDFWz0/img.png?width=1302&amp;amp;height=2093&amp;amp;face=0_0_1302_2093');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[자작NAS] 우분투 서버에 Docker로 rclone 설치 및 구글 드라이브 연동&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;rclone은 클라우드 스토리지 서비스를 연동하기 위한 툴입니다. 구글 드라이브, 원드라이브, 드롭박스 등의 다양한 클라우드 스토리지 서비스를 지원합니다. 사이트에서 대부분의 스토리지 서비&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;psychoria.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우분투 서버에 Docker를 통해 rclone을 설치하고 구글 드라이브를 암호화 연동하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. Docker 컨테이너 생성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 rclone을 통해 구글 드라이브를 암호화해서 연결하는 경우 기존 암호화되지 않은 데이터는 읽지 못합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그렇기 때문에 rclone 연동 이후에 모든 데이터를 새로 rclone을 통해 올려야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기존에 암호화되지 않은 데이터를 그대로 사용하고 싶으면 암호화없이 구글 드라이브를 연동해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 암호화해서 구글 드라이브를 연동하는 방법을 설명합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저 아래 명령어로 rclone에 필요한 디렉토리들을 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1638256075941&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo mkdir -p /data/rclone_gdrive/config
sudo mkdir -p /data/rclone_gdrive/log
sudo mkdir -p /data/rclone_gdrive/cache

sudo mkdir -p /data/rclone_gdrive/mergerfs
sudo chmod -R 777 /data/rclone_gdrive/mergerfs

sudo mkdir -p /mnt/rclone_gdrive&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;처음 세 줄은 설정과 로그, 캐시 등을 저장하는 공간입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 mergerfs를 연동하기 위해 그 다음의 두 줄을 실행하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막으로 구글 드라이브를 디렉토리에 연동하기 위한 디렉토리를 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;mergerfs를 연동하면 해당 디렉토리에 있는 데이터를 구글 드라이브에 자동으로 업로드할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 다음 명령어로 컨테이너를 실행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1638524016757&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker run -d \
--name=rclone_gdrive \
--net=bridge \
-v /data/rclone_gdrive/config:/config \
-v /data/rclone_gdrive/log:/log \
-v /data/rclone_gdrive/cache:/cache \
-v /mnt/rclone_gdrive:/data:shared \
-v /data/rclone_gdrive/mergerfs:/local \
--privileged=true \
--device /dev/fuse \
--cap-add=MKNOD \
--cap-add=SYS_ADMIN \
-e PGID=$(id -g $USER) \
-e PUID=$UID \
-e TZ=Asia/Seoul \
-e RCLONE_REMOTE_PATH=gdrive_crypt: \
-e RCLONE_MOUNT_USER_OPTS=&quot;--allow-non-empty --fast-list --drive-skip-gdocs --poll-interval=15s \
--vfs-cache-mode full --vfs-write-back 5s --bwlimit-file 16M --buffer-size=16M --vfs-read-chunk-size=32M \
--vfs-read-chunk-size-limit 2048M --vfs-cache-max-size 24G --vfs-cache-max-age 336h --vfs-read-ahead 32M \
--dir-cache-time=1000h --timeout 1h&quot; \
-e MFS_USER_OPTS=&quot;rw,async_read=false,use_ino,allow_other,nonempty,func.getattr=newest,\
category.action=all,category.create=ff,cache.files=partial,dropcacheonclose=true&quot; \
-e MOVE_LOCAL_ALL=true \
-e KEEP_EMPTY_DIRS=1 \
-e MOVE_LOCAL_SCHEDULE=&quot;0 * * * *&quot; \
-e DATE_FORMAT=&quot;--iso-8601=seconds&quot; \
-e POOLING_FS=mergerfs \
--restart=unless-stopped \
wiserain/rclone&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;환경 설정들은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MOVE_LOCAL_ALL&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.4884%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;로컬 디렉토리의 파일을 구글 드라이브로 전부 이동&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;KEEP_EMPTY_DIRS&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.4884%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;로컬 디렉토리의 파일을 전부 이동한 후에도 로컬에 빈 디렉토리를 유지&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;MOVE_LOCAL_SCHEDULE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.4884%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;로컬 디렉토리의 파일을 구글 드라이브로 이동하는 작업 스케줄 적용 (여기서는 매 정각마다 실행)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 컨테이너의 /local에 /data/rclone_gdrive/mergerfs를 연결했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 mergerfs 디렉터리에 파일을 복사하면 매 정각에 모든 파일을 구글 드라이브로 이동합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;로컬 디렉토리에 파일을 옮겨두면 지정된 스케줄에 따라 파일이 자동으로 전송되기 때문에 편리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일정 날짜 이후의 파일만 옮기려면 MOVE_LOCAL_ALL 대신 MOVE_LOCAL_AFTER_DAYS를 추가하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컨테이너가 동작하면 아래 명령어를 실행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1638524796921&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker exec -it rclone_gdrive rclone_setup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;구글 드라이브를 연동하기 위해 몇 가지 사항을 입력해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 암호화/복호화 연동&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음과 같은 메뉴가 표시됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639121106032&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;새로운 연결을 만들기 위해서 &lt;b&gt;n&lt;/b&gt;을 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_New.png&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsfyTq/btrnAiYXGaW/HWFZRHNB7FW5rjADRcJCJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsfyTq/btrnAiYXGaW/HWFZRHNB7FW5rjADRcJCJk/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsfyTq/btrnAiYXGaW/HWFZRHNB7FW5rjADRcJCJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsfyTq%2FbtrnAiYXGaW%2FHWFZRHNB7FW5rjADRcJCJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;528&quot; height=&quot;112&quot; data-filename=&quot;1_New.png&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;112&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 이름을 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639121546503&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2_Name.png&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GUK6v/btrnAh6NPfh/2k69xtFYcuWmf8aGslAFc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GUK6v/btrnAh6NPfh/2k69xtFYcuWmf8aGslAFc0/img.png&quot; data-alt=&quot;gdrive_crypt&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GUK6v/btrnAh6NPfh/2k69xtFYcuWmf8aGslAFc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGUK6v%2FbtrnAh6NPfh%2F2k69xtFYcuWmf8aGslAFc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;334&quot; height=&quot;23&quot; data-filename=&quot;2_Name.png&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;gdrive_crypt&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;컨테이너 생성 시 RCLONE_REMOTE_PATH에 입력한 값에서 콜론(:)을 빼고 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 &lt;b&gt;gdrive_crypt&lt;/b&gt;를 입력했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 연동할 클라우드 스토리지 서비스를 선택합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639121587490&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option Storage.
Type of storage to configure.
Enter a string value. Press Enter for the default (&quot;&quot;).
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ &quot;fichier&quot;
 2 / Alias for an existing remote
   \ &quot;alias&quot;
 3 / Amazon Drive
   \ &quot;amazon cloud drive&quot;
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
   \ &quot;s3&quot;
 5 / Backblaze B2
   \ &quot;b2&quot;
 6 / Better checksums for other remotes
   \ &quot;hasher&quot;
 7 / Box
   \ &quot;box&quot;
 8 / Cache a remote
   \ &quot;cache&quot;
 9 / Citrix Sharefile
   \ &quot;sharefile&quot;
10 / Compress a remote
   \ &quot;compress&quot;
11 / Dropbox
   \ &quot;dropbox&quot;
12 / Encrypt/Decrypt a remote
   \ &quot;crypt&quot;
13 / Enterprise File Fabric
   \ &quot;filefabric&quot;
14 / FTP Connection
   \ &quot;ftp&quot;
15 / Google Cloud Storage (this is not Google Drive)
   \ &quot;google cloud storage&quot;
16 / Google Drive
   \ &quot;drive&quot;
17 / Google Photos
   \ &quot;google photos&quot;
18 / Hadoop distributed file system
   \ &quot;hdfs&quot;
19 / Hubic
   \ &quot;hubic&quot;
20 / In memory object storage system.
   \ &quot;memory&quot;
21 / Jottacloud
   \ &quot;jottacloud&quot;
22 / Koofr
   \ &quot;koofr&quot;
23 / Local Disk
   \ &quot;local&quot;
24 / Mail.ru Cloud
   \ &quot;mailru&quot;
25 / Mega
   \ &quot;mega&quot;
26 / Microsoft Azure Blob Storage
   \ &quot;azureblob&quot;
27 / Microsoft OneDrive
   \ &quot;onedrive&quot;
28 / OpenDrive
   \ &quot;opendrive&quot;
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ &quot;swift&quot;
30 / Pcloud
   \ &quot;pcloud&quot;
31 / Put.io
   \ &quot;putio&quot;
32 / QingCloud Object Storage
   \ &quot;qingstor&quot;
33 / SSH/SFTP Connection
   \ &quot;sftp&quot;
34 / Sia Decentralized Cloud
   \ &quot;sia&quot;
35 / Sugarsync
   \ &quot;sugarsync&quot;
36 / Tardigrade Decentralized Cloud Storage
   \ &quot;tardigrade&quot;
37 / Transparently chunk/split large files
   \ &quot;chunker&quot;
38 / Union merges the contents of several upstream fs
   \ &quot;union&quot;
39 / Uptobox
   \ &quot;uptobox&quot;
40 / Webdav
   \ &quot;webdav&quot;
41 / Yandex Disk
   \ &quot;yandex&quot;
42 / Zoho
   \ &quot;zoho&quot;
43 / http Connection
   \ &quot;http&quot;
44 / premiumize.me
   \ &quot;premiumizeme&quot;
45 / seafile
   \ &quot;seafile&quot;
Storage&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 먼저 암호화/복호화 처리를 위해 &lt;b&gt;crypt&lt;/b&gt;를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3_Crypt.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;2093&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B36Kc/btrnyJigxLE/isSiqlHqOvIHfUeOfPPx9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B36Kc/btrnyJigxLE/isSiqlHqOvIHfUeOfPPx9k/img.png&quot; data-alt=&quot;crypt&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B36Kc/btrnyJigxLE/isSiqlHqOvIHfUeOfPPx9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB36Kc%2FbtrnyJigxLE%2FisSiqlHqOvIHfUeOfPPx9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1302&quot; height=&quot;2093&quot; data-filename=&quot;3_Crypt.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;2093&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;crypt&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 이후에 만들 구글 드라이브 연동 시 사용할 이름을 지정합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639122116873&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option remote.
Remote to encrypt/decrypt.
Normally should contain a ':' and a path, e.g. &quot;myremote:path/to/dir&quot;,
&quot;myremote:bucket&quot; or maybe &quot;myremote:&quot; (not recommended).
Enter a string value. Press Enter for the default (&quot;&quot;).
remote&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기에 &lt;b&gt;gdrive:&lt;/b&gt; (콜론 포함)을 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 입력한 이름은 이후에 실제 구글 드라이브를 연동할 때 사용되기 때문에 기억해둬야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;4_Remote.png&quot; data-origin-width=&quot;695&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3HfJL/btrnAY65feN/biPdDL9lh53eAKvpJoJQAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3HfJL/btrnAY65feN/biPdDL9lh53eAKvpJoJQAk/img.png&quot; data-alt=&quot;gdrive:&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3HfJL/btrnAY65feN/biPdDL9lh53eAKvpJoJQAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3HfJL%2FbtrnAY65feN%2FbiPdDL9lh53eAKvpJoJQAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;695&quot; height=&quot;132&quot; data-filename=&quot;4_Remote.png&quot; data-origin-width=&quot;695&quot; data-origin-height=&quot;132&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;gdrive:&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 파일 이름을 암호화할 것인지 여부를 선택합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639122354877&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option filename_encryption.
How to encrypt the filenames.
Enter a string value. Press Enter for the default (&quot;standard&quot;).
Choose a number from below, or type in your own value.
   / Encrypt the filenames.
 1 | See the docs for the details.
   \ &quot;standard&quot;
 2 / Very simple filename obfuscation.
   \ &quot;obfuscate&quot;
   / Don't encrypt the file names.
 3 | Adds a &quot;.bin&quot; extension only.
   \ &quot;off&quot;
filename_encryption&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;파일 이름도 암호화를 하기 위해 &lt;b&gt;standard&lt;/b&gt;를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5_Encrypt.png&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/myO2A/btrnB7IKRyw/N9714okqHZquKydkQYvxm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/myO2A/btrnB7IKRyw/N9714okqHZquKydkQYvxm1/img.png&quot; data-alt=&quot;standard&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/myO2A/btrnB7IKRyw/N9714okqHZquKydkQYvxm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmyO2A%2FbtrnB7IKRyw%2FN9714okqHZquKydkQYvxm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;579&quot; height=&quot;291&quot; data-filename=&quot;5_Encrypt.png&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;standard&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 디렉토리 이름을 암호화할 것인지 선택합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639122620647&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option directory_name_encryption.
Option to either encrypt directory names or leave them intact.
NB If filename_encryption is &quot;off&quot; then this option will do nothing.
Enter a boolean value (true or false). Press Enter for the default (&quot;true&quot;).
Choose a number from below, or type in your own value.
 1 / Encrypt directory names.
   \ &quot;true&quot;
 2 / Don't encrypt directory names, leave them intact.
   \ &quot;false&quot;
directory_name_encryption&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;디렉토리 이름도 암호화를 하려면 &lt;b&gt;true&lt;/b&gt;를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;6_Encrypt.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYXOok/btrnyI4PP8L/adSC7ibvUhTXXBqZGjKk0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYXOok/btrnyI4PP8L/adSC7ibvUhTXXBqZGjKk0k/img.png&quot; data-alt=&quot;true&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYXOok/btrnyI4PP8L/adSC7ibvUhTXXBqZGjKk0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYXOok%2FbtrnyI4PP8L%2FadSC7ibvUhTXXBqZGjKk0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;692&quot; height=&quot;223&quot; data-filename=&quot;6_Encrypt.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;true&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 암호화에 사용할 패스워드를 설정합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639123053310&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option password.
Password or pass phrase for encryption.
Choose an alternative below.
y) Yes type in my own password
g) Generate random password
y/g&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;패스워드를 직접 입력하기 위해 &lt;b&gt;y&lt;/b&gt;를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;7_Own.png&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPPXBm/btrnyIjrHja/1NEkPXrke8sKZoH5tpHMU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPPXBm/btrnyIjrHja/1NEkPXrke8sKZoH5tpHMU1/img.png&quot; data-alt=&quot;y&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPPXBm/btrnyIjrHja/1NEkPXrke8sKZoH5tpHMU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPPXBm%2FbtrnyIjrHja%2F1NEkPXrke8sKZoH5tpHMU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;498&quot; height=&quot;134&quot; data-filename=&quot;7_Own.png&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;y&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제 원하는 비밀번호를 동일하게 두 번 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639123218989&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Enter the password:
password:
Confirm the password:
password:&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;8_Password.png&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sZIZM/btrnB7owub0/ylyb5BqfeeEJMUEasYxMx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sZIZM/btrnB7owub0/ylyb5BqfeeEJMUEasYxMx1/img.png&quot; data-alt=&quot;암호 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sZIZM/btrnB7owub0/ylyb5BqfeeEJMUEasYxMx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsZIZM%2FbtrnB7owub0%2Fylyb5BqfeeEJMUEasYxMx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;390&quot; height=&quot;89&quot; data-filename=&quot;8_Password.png&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;암호 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 암호화를 위한 솔트를 사용할지 여부를 선택합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;솔트는 암호를 해독하기 어렵게 만들기 위해서 추가로 사용하는 값입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639123641535&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option password2.
Password or pass phrase for salt.
Optional but recommended.
Should be different to the previous password.
Choose an alternative below. Press Enter for the default (n).
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank (default)
y/g/n&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기도 직접 원하는 솔트 값을 사용하기 위해 &lt;b&gt;y&lt;/b&gt;를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9_Salt.png&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uV0rU/btrnAJbiYRq/lDgY4pxb5iaULCO7MA5HAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uV0rU/btrnAJbiYRq/lDgY4pxb5iaULCO7MA5HAK/img.png&quot; data-alt=&quot;y&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uV0rU/btrnAJbiYRq/lDgY4pxb5iaULCO7MA5HAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuV0rU%2FbtrnAJbiYRq%2FlDgY4pxb5iaULCO7MA5HAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;744&quot; height=&quot;202&quot; data-filename=&quot;9_Salt.png&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;y&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;만약 솔트를 사용하지 않을 것이라면 입력하지 않고 그냥 엔터를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;y를 선택했으면 비밀번호 입력과 동일하게 같은 값을 두 번 입력해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639123901636&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Enter the password:
password:
Confirm the password:
password:&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10_Password.png&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m2S7X/btrnAXtFqHT/PZheFHGhfObb5DOQ6alRyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m2S7X/btrnAXtFqHT/PZheFHGhfObb5DOQ6alRyK/img.png&quot; data-alt=&quot;솔트 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m2S7X/btrnAXtFqHT/PZheFHGhfObb5DOQ6alRyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm2S7X%2FbtrnAXtFqHT%2FPZheFHGhfObb5DOQ6alRyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;390&quot; height=&quot;89&quot; data-filename=&quot;10_Password.png&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;솔트 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;비밀번호와 솔트는 반드시 기억해둬야 새 서버에 rclone 설치 시 동일하게 입력해서 구글 드라이브를 연동할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 상세 설정을 수정할 것인가를 물어봅니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639124050460&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Edit advanced config?
y) Yes
n) No (default)
y/n&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 n을 눌러서 스킵하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11_Setting.png&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dE3hT1/btrnB7IRuK9/cSQq9BDc70KvkVLs8dVbtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dE3hT1/btrnB7IRuK9/cSQq9BDc70KvkVLs8dVbtk/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dE3hT1/btrnB7IRuK9/cSQq9BDc70KvkVLs8dVbtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdE3hT1%2FbtrnB7IRuK9%2FcSQq9BDc70KvkVLs8dVbtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;352&quot; height=&quot;240&quot; data-filename=&quot;11_Setting.png&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;지금까지 입력했던 내용들을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이름은 gdrive_crypt으로 설정했고 crypt 타입으로 이후에 생성할 gdrive라는 이름의 연결을 암호화합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;remote로 설정된 &lt;b&gt;gdrive&lt;/b&gt;라는 이름은 이후에 구글 드라이브 연동 시 동일하게 입력해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막으로 확인을 하고 &lt;b&gt;y&lt;/b&gt;를 입력해서 설정을 적용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639125454432&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12_Save.png&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M3T87/btrnyok2DDD/3wikwB2ERcskB20Mjpqonk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M3T87/btrnyok2DDD/3wikwB2ERcskB20Mjpqonk/img.png&quot; data-alt=&quot;y&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M3T87/btrnyok2DDD/3wikwB2ERcskB20Mjpqonk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM3T87%2Fbtrnyok2DDD%2F3wikwB2ERcskB20Mjpqonk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;490&quot; height=&quot;218&quot; data-filename=&quot;12_Save.png&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;218&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;y&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 암호화/복호화 연동이 완료됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. 구글 드라이브 연동&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;암호화를 위한 연동을 마치고 구글 드라이브 연동을 계속할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639125677374&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;처음보다 메뉴가 늘어났지만 동일하게 &lt;b&gt;n&lt;/b&gt;을 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;13_New.png&quot; data-origin-width=&quot;531&quot; data-origin-height=&quot;179&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUMtGv/btrnBtFKLGR/LtZWl6cxklKAqCsAEkPSwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUMtGv/btrnBtFKLGR/LtZWl6cxklKAqCsAEkPSwK/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUMtGv/btrnBtFKLGR/LtZWl6cxklKAqCsAEkPSwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUMtGv%2FbtrnBtFKLGR%2FLtZWl6cxklKAqCsAEkPSwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;531&quot; height=&quot;179&quot; data-filename=&quot;13_New.png&quot; data-origin-width=&quot;531&quot; data-origin-height=&quot;179&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 이름을 입력하는데 위에서 입력했던 &lt;b&gt;gdrive&lt;/b&gt;를 입력(gdrive:에서 :제거)해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639125942239&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;14_Name.png&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;25&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUJtzH/btrnCAD9B08/pGgln4DtUEx1LNcpxrK990/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUJtzH/btrnCAD9B08/pGgln4DtUEx1LNcpxrK990/img.png&quot; data-alt=&quot;gdrive&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUJtzH/btrnCAD9B08/pGgln4DtUEx1LNcpxrK990/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUJtzH%2FbtrnCAD9B08%2FpGgln4DtUEx1LNcpxrK990%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;367&quot; height=&quot;25&quot; data-filename=&quot;14_Name.png&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;25&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;gdrive&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 연동할 클라우드 스토리지 서비스를 선택합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639126098891&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option Storage.
Type of storage to configure.
Enter a string value. Press Enter for the default (&quot;&quot;).
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ &quot;fichier&quot;
 2 / Alias for an existing remote
   \ &quot;alias&quot;
 3 / Amazon Drive
   \ &quot;amazon cloud drive&quot;
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
   \ &quot;s3&quot;
 5 / Backblaze B2
   \ &quot;b2&quot;
 6 / Better checksums for other remotes
   \ &quot;hasher&quot;
 7 / Box
   \ &quot;box&quot;
 8 / Cache a remote
   \ &quot;cache&quot;
 9 / Citrix Sharefile
   \ &quot;sharefile&quot;
10 / Compress a remote
   \ &quot;compress&quot;
11 / Dropbox
   \ &quot;dropbox&quot;
12 / Encrypt/Decrypt a remote
   \ &quot;crypt&quot;
13 / Enterprise File Fabric
   \ &quot;filefabric&quot;
14 / FTP Connection
   \ &quot;ftp&quot;
15 / Google Cloud Storage (this is not Google Drive)
   \ &quot;google cloud storage&quot;
16 / Google Drive
   \ &quot;drive&quot;
17 / Google Photos
   \ &quot;google photos&quot;
18 / Hadoop distributed file system
   \ &quot;hdfs&quot;
19 / Hubic
   \ &quot;hubic&quot;
20 / In memory object storage system.
   \ &quot;memory&quot;
21 / Jottacloud
   \ &quot;jottacloud&quot;
22 / Koofr
   \ &quot;koofr&quot;
23 / Local Disk
   \ &quot;local&quot;
24 / Mail.ru Cloud
   \ &quot;mailru&quot;
25 / Mega
   \ &quot;mega&quot;
26 / Microsoft Azure Blob Storage
   \ &quot;azureblob&quot;
27 / Microsoft OneDrive
   \ &quot;onedrive&quot;
28 / OpenDrive
   \ &quot;opendrive&quot;
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ &quot;swift&quot;
30 / Pcloud
   \ &quot;pcloud&quot;
31 / Put.io
   \ &quot;putio&quot;
32 / QingCloud Object Storage
   \ &quot;qingstor&quot;
33 / SSH/SFTP Connection
   \ &quot;sftp&quot;
34 / Sia Decentralized Cloud
   \ &quot;sia&quot;
35 / Sugarsync
   \ &quot;sugarsync&quot;
36 / Tardigrade Decentralized Cloud Storage
   \ &quot;tardigrade&quot;
37 / Transparently chunk/split large files
   \ &quot;chunker&quot;
38 / Union merges the contents of several upstream fs
   \ &quot;union&quot;
39 / Uptobox
   \ &quot;uptobox&quot;
40 / Webdav
   \ &quot;webdav&quot;
41 / Yandex Disk
   \ &quot;yandex&quot;
42 / Zoho
   \ &quot;zoho&quot;
43 / http Connection
   \ &quot;http&quot;
44 / premiumize.me
   \ &quot;premiumizeme&quot;
45 / seafile
   \ &quot;seafile&quot;
Storage&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 &lt;b&gt;drive&lt;/b&gt;를 입력해서 구글 드라이브를 연동합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15_Drive.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;2093&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvmrkw/btrnBstkpYK/akyqBjUbZdUfK1AW57e3L1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvmrkw/btrnBstkpYK/akyqBjUbZdUfK1AW57e3L1/img.png&quot; data-alt=&quot;drive&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvmrkw/btrnBstkpYK/akyqBjUbZdUfK1AW57e3L1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvmrkw%2FbtrnBstkpYK%2FakyqBjUbZdUfK1AW57e3L1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1302&quot; height=&quot;2093&quot; data-filename=&quot;15_Drive.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;2093&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;drive&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 클라이언트 ID를 입력해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639126447276&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default (&quot;&quot;).
client_id&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;구글 드라이브 연동을 위한 클라이언트 ID와 시크릿을 생성하기 위한 방법은 아래 링크를 참조하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://psychoria.tistory.com/674&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2019.01.11 - [IT/Tip&amp;amp;Tech] - 구글 드라이브 API(Google Drive API) 활성화 방법&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1639126401752&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;구글 드라이브 API(Google Drive API) 활성화 방법&quot; data-og-description=&quot;약간의 월 비용을 지불하고 G Suite 서비스를 사용하면 무제한 구글 드라이브 용량이 제공됩니다. 구글 드라이브 무제한을 활용해서 PLEX와 연동시켜서 사용할 수 있습니다. Plexdrive는 구글 드라이&quot; data-og-host=&quot;psychoria.tistory.com&quot; data-og-source-url=&quot;https://psychoria.tistory.com/674&quot; data-og-url=&quot;https://psychoria.tistory.com/674&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bY3jXS/hyMESmBRRg/9REgNUc7gfjcs3nY3RfDXK/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544,https://scrap.kakaocdn.net/dn/W5XTM/hyME39wIWQ/VFB5uhnkEEiFDlKsXi2rK1/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544,https://scrap.kakaocdn.net/dn/ckNCPT/hyME3Pccll/n4FFY4FCBgzsbVzxYH3eo1/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544&quot;&gt;&lt;a href=&quot;https://psychoria.tistory.com/674&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://psychoria.tistory.com/674&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bY3jXS/hyMESmBRRg/9REgNUc7gfjcs3nY3RfDXK/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544,https://scrap.kakaocdn.net/dn/W5XTM/hyME39wIWQ/VFB5uhnkEEiFDlKsXi2rK1/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544,https://scrap.kakaocdn.net/dn/ckNCPT/hyME3Pccll/n4FFY4FCBgzsbVzxYH3eo1/img.png?width=700&amp;amp;height=544&amp;amp;face=0_0_700_544');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;구글 드라이브 API(Google Drive API) 활성화 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;약간의 월 비용을 지불하고 G Suite 서비스를 사용하면 무제한 구글 드라이브 용량이 제공됩니다. 구글 드라이브 무제한을 활용해서 PLEX와 연동시켜서 사용할 수 있습니다. Plexdrive는 구글 드라이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;psychoria.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클라이언트 ID를 복사해서 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;16_ClientID.png&quot; data-origin-width=&quot;2257&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kPX6p/btrnB8gQ8WP/VjhazcuSKjOTnDYOo31Tzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kPX6p/btrnB8gQ8WP/VjhazcuSKjOTnDYOo31Tzk/img.png&quot; data-alt=&quot;Client ID&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kPX6p/btrnB8gQ8WP/VjhazcuSKjOTnDYOo31Tzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkPX6p%2FbtrnB8gQ8WP%2FVjhazcuSKjOTnDYOo31Tzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2257&quot; height=&quot;488&quot; data-filename=&quot;16_ClientID.png&quot; data-origin-width=&quot;2257&quot; data-origin-height=&quot;488&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client ID&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;보통 .apps.googleusercontent.com 형태로 끝나는 값으로 이것을 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;17_ClientID.png&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ay9fY/btrnB9mxthu/PzpaT9JhATRcabuPM8A3A0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ay9fY/btrnB9mxthu/PzpaT9JhATRcabuPM8A3A0/img.png&quot; data-alt=&quot;Client ID 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ay9fY/btrnB9mxthu/PzpaT9JhATRcabuPM8A3A0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAy9fY%2FbtrnB9mxthu%2FPzpaT9JhATRcabuPM8A3A0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;803&quot; height=&quot;156&quot; data-filename=&quot;17_ClientID.png&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client ID 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 Secret을 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639126827739&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a string value. Press Enter for the default (&quot;&quot;).
client_secret&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 값은 Client ID 값 옆의 연필 모양 아이콘(Edit OAuth client)을 누르면 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;18_Secret.png&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAmWHf/btrnAiSBDjX/AznoLt8lNX1sk5UIuJTfW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAmWHf/btrnAiSBDjX/AznoLt8lNX1sk5UIuJTfW0/img.png&quot; data-alt=&quot;Client secret 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAmWHf/btrnAiSBDjX/AznoLt8lNX1sk5UIuJTfW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAmWHf%2FbtrnAiSBDjX%2FAznoLt8lNX1sk5UIuJTfW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1370&quot; height=&quot;140&quot; data-filename=&quot;18_Secret.png&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client secret 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;공백 등이 포함되지 않도록 주의해서 값을 복사한 후 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;19_Secret.png&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3Xj3i/btrnyIqs9ha/gqICk0Ro6KwGw3YZMlYQtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3Xj3i/btrnyIqs9ha/gqICk0Ro6KwGw3YZMlYQtk/img.png&quot; data-alt=&quot;Client secret&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3Xj3i/btrnyIqs9ha/gqICk0Ro6KwGw3YZMlYQtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3Xj3i%2FbtrnyIqs9ha%2FgqICk0Ro6KwGw3YZMlYQtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;510&quot; height=&quot;112&quot; data-filename=&quot;19_Secret.png&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;112&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Client secret&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 모든 파일을 접근할 수 있는 권한을 설정합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639127201598&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option scope.
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default (&quot;&quot;).
Choose a number from below, or type in your own value.
 1 / Full access all files, excluding Application Data Folder.
   \ &quot;drive&quot;
 2 / Read-only access to file metadata and file contents.
   \ &quot;drive.readonly&quot;
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ &quot;drive.file&quot;
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ &quot;drive.appfolder&quot;
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ &quot;drive.metadata.readonly&quot;
scope&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모든 파일에 대해서 접근 권한을 얻기 위해 &lt;b&gt;drive&lt;/b&gt;를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20_Access.png&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ySYl0/btrnB7CjUuU/GDhdjU4ikSh8PXdE690L20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ySYl0/btrnB7CjUuU/GDhdjU4ikSh8PXdE690L20/img.png&quot; data-alt=&quot;drive&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ySYl0/btrnB7CjUuU/GDhdjU4ikSh8PXdE690L20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FySYl0%2FbtrnB7CjUuU%2FGDhdjU4ikSh8PXdE690L20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;798&quot; height=&quot;420&quot; data-filename=&quot;20_Access.png&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;drive&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 루트 폴더를 설정하는 설정으로 그냥 엔터를 누르면 구글 드라이브의 루트를 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639127417474&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option root_folder_id.
ID of the root folder.
Leave blank normally.
Fill in to access &quot;Computers&quot; folders (see docs), or for rclone to use
a non root folder as its starting point.
Enter a string value. Press Enter for the default (&quot;&quot;).
root_folder_id&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;21_Root.png&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eaPG4t/btrnB73nbcR/iJhXFlp1uFZDR49iFICZA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eaPG4t/btrnB73nbcR/iJhXFlp1uFZDR49iFICZA1/img.png&quot; data-alt=&quot;엔터 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eaPG4t/btrnB73nbcR/iJhXFlp1uFZDR49iFICZA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeaPG4t%2FbtrnB73nbcR%2FiJhXFlp1uFZDR49iFICZA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;727&quot; height=&quot;157&quot; data-filename=&quot;21_Root.png&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;엔터 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;아무것도 입력하지 않고 엔터를 입력&lt;/b&gt;하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 Service Account Credentials JSON 경로 설정입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639127568295&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option service_account_file.
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a string value. Press Enter for the default (&quot;&quot;).
service_account_file&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 부분은 &lt;b&gt;아무 입력없이 바로 엔터를 입력&lt;/b&gt;해서 넘어가면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;22_Json.png&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhwEnO/btrnypxC2E9/76oeywGYLol3RZUq1h21u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhwEnO/btrnypxC2E9/76oeywGYLol3RZUq1h21u1/img.png&quot; data-alt=&quot;엔터 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhwEnO/btrnypxC2E9/76oeywGYLol3RZUq1h21u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhwEnO%2FbtrnypxC2E9%2F76oeywGYLol3RZUq1h21u1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;984&quot; height=&quot;156&quot; data-filename=&quot;22_Json.png&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;엔터 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막으로 상세 설정을 수정할 것인지 물어봅니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639127763505&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Edit advanced config?
y) Yes
n) No (default)
y/n&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서는 &lt;b&gt;n&lt;/b&gt;을 눌러서 다음으로 진행하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;23_Settings.png&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDSy7s/btrnAXHqZvC/wQALDb6xQI3fJECmZ9E3TK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDSy7s/btrnAXHqZvC/wQALDb6xQI3fJECmZ9E3TK/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDSy7s/btrnAXHqZvC/wQALDb6xQI3fJECmZ9E3TK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDSy7s%2FbtrnAXHqZvC%2FwQALDb6xQI3fJECmZ9E3TK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;352&quot; height=&quot;94&quot; data-filename=&quot;23_Settings.png&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;자동 설정을 사용할 것인지 설정합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639127928326&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일반적으로 서버에 SSH 연결을 한 후 설정하기 때문에 여기서는 &lt;b&gt;n&lt;/b&gt;을 눌러서 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;24_AutoConfig.png&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xGiuc/btrnBMLYRcI/SKNYhw4kRkMy735IePJkQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xGiuc/btrnBMLYRcI/SKNYhw4kRkMy735IePJkQ1/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xGiuc/btrnBMLYRcI/SKNYhw4kRkMy735IePJkQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxGiuc%2FbtrnBMLYRcI%2FSKNYhw4kRkMy735IePJkQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;585&quot; height=&quot;155&quot; data-filename=&quot;24_AutoConfig.png&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 링크가 하나 표시되는데 이 링크를 웹 브라우저에서 열어줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639128114189&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option config_verification_code.
Verification code
Go to this URL, authenticate then paste the code here.
https://accounts.google.com/o/oauth2/auth
Enter a string value. Press Enter for the default (&quot;&quot;).
config_verification_code&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;웹 브라우저에서 로그인을 하고 연결을 허용하기 위해 &lt;b&gt;Allow&lt;/b&gt;를 클릭합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;25_Allow.png&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GaoXE/btrnVbxV4mn/5UrcEKVpELY0HMa99QHoDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GaoXE/btrnVbxV4mn/5UrcEKVpELY0HMa99QHoDk/img.png&quot; data-alt=&quot;Allow&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GaoXE/btrnVbxV4mn/5UrcEKVpELY0HMa99QHoDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGaoXE%2FbtrnVbxV4mn%2F5UrcEKVpELY0HMa99QHoDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;456&quot; height=&quot;650&quot; data-filename=&quot;25_Allow.png&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Allow&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;화면에 코드가 표시되는데 이 코드를 입력해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;26_Code.png&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;509&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qZW0k/btrnCz6r34t/3HPz19IhxakeJYI5UzthS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qZW0k/btrnCz6r34t/3HPz19IhxakeJYI5UzthS0/img.png&quot; data-alt=&quot;코드 복사 및 붙여넣기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qZW0k/btrnCz6r34t/3HPz19IhxakeJYI5UzthS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqZW0k%2FbtrnCz6r34t%2F3HPz19IhxakeJYI5UzthS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;509&quot; data-filename=&quot;26_Code.png&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;509&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;코드 복사 및 붙여넣기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 팀 드라이브를 설정할 것인지 물어봅니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639128983528&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Configure this as a Shared Drive (Team Drive)?

y) Yes
n) No (default)
y/n&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;개인 드라이브를 사용하기 위해 &lt;b&gt;n&lt;/b&gt;을 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;27_TeamDrive.png&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSPuov/btrnBbS4JK8/yDB5pV7hCjJtkSXq4Fb8SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSPuov/btrnBbS4JK8/yDB5pV7hCjJtkSXq4Fb8SK/img.png&quot; data-alt=&quot;n&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSPuov/btrnBbS4JK8/yDB5pV7hCjJtkSXq4Fb8SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSPuov%2FbtrnBbS4JK8%2FyDB5pV7hCjJtkSXq4Fb8SK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;457&quot; height=&quot;116&quot; data-filename=&quot;27_TeamDrive.png&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;n&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막으로 설정을 확인하고 제대로 입력이 되었으면 &lt;b&gt;y&lt;/b&gt;를 눌러서 저장합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639129208909&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;28_Save.png&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vum4Y/btrnCme6jCo/l2HrNAXGKjlO9fMiVGz7Nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vum4Y/btrnCme6jCo/l2HrNAXGKjlO9fMiVGz7Nk/img.png&quot; data-alt=&quot;y&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vum4Y/btrnCme6jCo/l2HrNAXGKjlO9fMiVGz7Nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvum4Y%2FbtrnCme6jCo%2Fl2HrNAXGKjlO9fMiVGz7Nk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;338&quot; height=&quot;97&quot; data-filename=&quot;28_Save.png&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;y&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막으로 추가된 리모트들을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639129344979&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Current remotes:

Name                 Type
====                 ====
gdrive               drive
gdrive_crypt         crypt

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정을 확인하고 &lt;b&gt;q&lt;/b&gt;를 눌러서 종료합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;29_Quit.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;331&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4Rkfm/btrnCkVUUQw/u8MS2Mu86ZwghxOlV6xcW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4Rkfm/btrnCkVUUQw/u8MS2Mu86ZwghxOlV6xcW0/img.png&quot; data-alt=&quot;q&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4Rkfm/btrnCkVUUQw/u8MS2Mu86ZwghxOlV6xcW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4Rkfm%2FbtrnCkVUUQw%2Fu8MS2Mu86ZwghxOlV6xcW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;331&quot; data-filename=&quot;29_Quit.png&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;331&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;q&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 설정이 완료됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;4. 드라이브 연동 확인&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정이 정상적으로 되면 /mnt/rclone_gdrive/ 이동하면 구글 드라이브의 파일을 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1639129689283&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd /mnt/rclone_gdrive/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;처음 연동을 했을 때는 아무런 파일이 표시되지 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;mkdir 등으로 디렉토리를 만들어보면 리눅스에서는 암호화가 안된 디렉토리 명으로 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;구글 드라이브에서는 디렉토리 및 파일 암호화 설정 여부에 따라 암호화된 이름으로 표시가 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음으로 /data/rclone_gdrive/mergerfs에 디렉토리와 파일들을 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;스케줄러가 매 정각에 파일들을 구글드라이브로 전송하고 파일을 자동으로 삭제합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이것으로 rclone으로 구글 드라이브 암호화 연동이 완료됩니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/NAS</category>
      <category>cloud storage</category>
      <category>docker</category>
      <category>Google Drive</category>
      <category>nas</category>
      <category>rclone</category>
      <category>Ubuntu Server</category>
      <category>구글 드라이브</category>
      <category>도커</category>
      <category>우분투 서버</category>
      <category>클라우드 스토리지</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/781</guid>
      <comments>https://psychoria.tistory.com/781#entry781comment</comments>
      <pubDate>Tue, 14 Dec 2021 17:00:29 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 자바 HashSet 사용 방법</title>
      <link>https://psychoria.tistory.com/780</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;자바의 HashSet은 Set 인터페이스를 구현한 클래스입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet은 중복된 값을 허용하지 않으며 List 등과는 다르게 입력한 순서가 보장되지 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet의 특징을 정리하면 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;중복된 값을 허용하지 않음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입력한 순서가 보장되지 않음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;null을 값으로 허용&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;중복된 값을 허용하지 않는 특징이 있기 때문에 값의 존재 유무를 파악할 때 사용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet의 내부 코드를 보면 HashMap을 사용해서 구현이 되어 있는 것을 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;자바의 HashSet을 활용하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. HashSet 생성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;자바에서 HashSet을 사용하려면 아래 구문을 추가해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1631691570994&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.HashSet;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet을 생성하는 방법은 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637219530534&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;HashSet&amp;lt;String&amp;gt; colors1 = new HashSet&amp;lt;String&amp;gt;(); // 타입 지정
HashSet&amp;lt;String&amp;gt; colors2 = new HashSet&amp;lt;&amp;gt;(); // 타입 생략 가능
HashSet&amp;lt;String&amp;gt; colors3 = new HashSet&amp;lt;&amp;gt;(10); // 초기 용량(Capacity) 설정
HashSet&amp;lt;String&amp;gt; colors4 = new HashSet&amp;lt;&amp;gt;(colors1); // 다른 Collection값으로 초기화
HashSet&amp;lt;String&amp;gt; colors5 = new HashSet&amp;lt;&amp;gt;(Arrays.asList(&quot;Blue&quot;, &quot;Black&quot;, &quot;White&quot;)); // Arrays.asList()
HashSet&amp;lt;String&amp;gt; colors6 = new HashSet&amp;lt;&amp;gt;(){{
    add(&quot;Blue&quot;);
    add(&quot;Black&quot;);
    add(&quot;White&quot;);
}};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본적으로 빈 HashSet을 생성할 때는 두 번째 방법을 주로 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 원하는 값들을 추가하면서 생성하는 것도 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;상황에 맞는 방법을 사용해서 HashSet을 생성하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. HashSet 엘레멘트 추가&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet에 값을 추가하고 싶을 때는 add() 메소드를 호출하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637219880215&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        HashSet&amp;lt;String&amp;gt; colors = new HashSet&amp;lt;&amp;gt;();
        colors.add(&quot;Black&quot;);
        colors.add(&quot;White&quot;);
        colors.add(&quot;Green&quot;);
        colors.add(&quot;Red&quot;);

        System.out.println(colors);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet은 입력된 순서가 보장되지 않기 때문에 특정 위치에 값을 추가하거나 할 수는 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1_Result.png&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;26&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tFHex/btrlpWxtSaX/wm09OloGBJAc4gnC96jsV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tFHex/btrlpWxtSaX/wm09OloGBJAc4gnC96jsV0/img.png&quot; data-alt=&quot;결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tFHex/btrlpWxtSaX/wm09OloGBJAc4gnC96jsV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtFHex%2FbtrlpWxtSaX%2Fwm09OloGBJAc4gnC96jsV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;225&quot; height=&quot;26&quot; data-filename=&quot;1_Result.png&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;26&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;출력된 값의 순서를 보면 입력한 순서와 상관없이 출력되는 것을 알 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다른 컬렉션의 값들을 한 번에 입력할 때는 addAll()을 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637220340318&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;
import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        HashSet&amp;lt;String&amp;gt; colors = new HashSet&amp;lt;&amp;gt;();
        colors.add(&quot;Black&quot;);
        colors.add(&quot;White&quot;);
        colors.add(&quot;Green&quot;);

        HashSet&amp;lt;String&amp;gt; otherColors = new HashSet&amp;lt;&amp;gt;(Arrays.asList(&quot;Black&quot;, &quot;Yellow&quot;, &quot;Purple&quot;));
        colors.addAll(otherColors);

        System.out.println(colors);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;값들을 입력할 때 중복되는 값은 제거가 되기 때문에 중복이 발생하지 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2_Result.png&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;28&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3husa/btrlox56cet/jCo2XZKYOMRpqJaBQzTVSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3husa/btrlox56cet/jCo2XZKYOMRpqJaBQzTVSK/img.png&quot; data-alt=&quot;결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3husa/btrlox56cet/jCo2XZKYOMRpqJaBQzTVSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3husa%2Fbtrlox56cet%2FjCo2XZKYOMRpqJaBQzTVSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;369&quot; height=&quot;28&quot; data-filename=&quot;2_Result.png&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;28&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Black이 중복되지만 한 번만 표시되는 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. HashSet 엘레멘트 삭제&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet에 추가된 값을 삭제할 때는 remove(), removeAll(), removeIf()를 호출하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637220845896&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;
import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        HashSet&amp;lt;String&amp;gt; colors = new HashSet&amp;lt;&amp;gt;();
        colors.add(&quot;Black&quot;);
        colors.add(&quot;White&quot;);
        colors.add(&quot;Green&quot;);
        colors.add(&quot;Blue&quot;);
        colors.add(&quot;Red&quot;);
        colors.add(&quot;Purple&quot;);

        colors.remove(&quot;Red&quot;);
        System.out.println(colors); // [White, Blue, Purple, Black, Green]

        colors.removeIf(color -&amp;gt; color.startsWith(&quot;B&quot;));
        System.out.println(colors); // [White, Purple, Green]

        colors.removeAll(Arrays.asList(&quot;White&quot;, &quot;Green&quot;));
        System.out.println(colors); // [Purple]

        colors.clear();
        System.out.println(colors); // []
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;먼저, remove()는 특정 값을 삭제할 때 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 조건을 적용해서 여러 값들을 삭제할 때는 removeIf() 메소드를 사용하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예제의 코드는 B로 시작하는 색들을 지우는 코드입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block; text-align: center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-6598061204302497&quot; data-ad-slot=&quot;8320619864&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마지막으로 removeAll()은 다른 컬렉션에 있는 값들을 입력 값으로 받아서 해당 값들을 전부 찾아서 지웁니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;remove()는 값이 지워지면 true를 리턴하기 때문에 삭제와 동시에 값이 존재했었는지 여부를 알 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet 안의 모든 값을 지우고 싶을 때는 clear() 메소드를 호출하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4. HashSet 전체 값 확인&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet의 전체 값을 확인하는 방법은 잘 사용되는 방법은 아닙니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet을 사용하는 이유는 컬렉션 내에 찾고자 하는 값이 존재하는지 여부를 확인하기 위해서입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637222001938&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.HashSet;
import java.util.Iterator;

public class Main {
    public static void main(String[] args) {
        HashSet&amp;lt;String&amp;gt; colors = new HashSet&amp;lt;&amp;gt;();
        colors.add(&quot;Black&quot;);
        colors.add(&quot;White&quot;);
        colors.add(&quot;Green&quot;);
        colors.add(&quot;Red&quot;);

        // for-each loop
        for (String color : colors) {
            System.out.print(color + &quot;  &quot;);
        }
        System.out.println();

        // using iterator
        Iterator&amp;lt;String&amp;gt; iterator = colors.iterator();
        while (iterator.hasNext()) {
            System.out.print(iterator.next() + &quot;  &quot;);
        }
        System.out.println();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;for를 사용하는 방법과 iterator를 사용하는 방법을 고려해 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;5. 값 존재 유무 확인&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HashSet은 컬렉션 내에 값이 존재하는지 여부를 확인하는데 최적화된 자료 구조입니다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;contains() 메소드를 호출해서 값이 존재하는지 여부를 빠르게 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637222204607&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        HashSet&amp;lt;String&amp;gt; colors = new HashSet&amp;lt;&amp;gt;();
        colors.add(&quot;Black&quot;);
        colors.add(&quot;White&quot;);
        colors.add(&quot;Green&quot;);
        colors.add(&quot;Red&quot;);

        System.out.println(colors.contains(&quot;Green&quot;)); // true
        System.out.println(colors.contains(&quot;Purple&quot;)); // false
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;값이 존재하는 경우 true를 리턴하며 없는 경우 false를 리턴합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;값이 존재하는지 유무를 파악하는 것이 중요하다면 HashSet을 적극 활용하면 됩니다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Programming/Java</category>
      <category>Collection</category>
      <category>HashSet</category>
      <category>java</category>
      <category>set</category>
      <category>자바</category>
      <category>자바 기초</category>
      <category>컬렉션</category>
      <category>해시셋</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/780</guid>
      <comments>https://psychoria.tistory.com/780#entry780comment</comments>
      <pubDate>Sat, 20 Nov 2021 17:00:55 +0900</pubDate>
    </item>
    <item>
      <title>빠른 윈도우(Windows) 파일 검색을 위한 Everything</title>
      <link>https://psychoria.tistory.com/779</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Everything은 윈도우의 기본 검색 기본 기능보다 빠르게 파일이나 폴더를 검색할 수 있는 툴입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;윈도우의 기본 검색 기능은 상황에 따라 상당한 시간이 걸립니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;834&quot; data-filename=&quot;1_Search.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXrnxh/btq5MuIEdHN/ytNiUYmmyWg3aonM61GKOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXrnxh/btq5MuIEdHN/ytNiUYmmyWg3aonM61GKOk/img.png&quot; data-alt=&quot;윈도우 검색&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXrnxh/btq5MuIEdHN/ytNiUYmmyWg3aonM61GKOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXrnxh%2Fbtq5MuIEdHN%2FytNiUYmmyWg3aonM61GKOk%2Fimg.png&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;834&quot; data-filename=&quot;1_Search.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;윈도우 검색&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Everything을 사용하면 기본 검색 기능보다 빠르게 파일이나 폴더를 찾을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Everything을 설치하고 사용하는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Everything은 아래 링크에서 다운로드가 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://voidtools.com/&quot;&gt;voidtools&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1621993585612&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;voidtools&quot; data-og-description=&quot;Everything 실시간 파일/폴더 검색 작은 설치파일 깔끔하고 단순한 UI 빠른 파일 색인 빠른 검색 최저 자원 사용 쉬운 파일 공유 실시간 갱신 등등... Everything 1.4.1.1005 다운로드 32비트 설치파일 64비&quot; data-og-host=&quot;voidtools.com&quot; data-og-source-url=&quot;https://voidtools.com/&quot; data-og-url=&quot;https://voidtools.com/ko-kr/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://voidtools.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://voidtools.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;voidtools&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Everything 실시간 파일/폴더 검색 작은 설치파일 깔끔하고 단순한 UI 빠른 파일 색인 빠른 검색 최저 자원 사용 쉬운 파일 공유 실시간 갱신 등등... Everything 1.4.1.1005 다운로드 32비트 설치파일 64비&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;voidtools.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Everything 설치 파일을 실행하고 언어를 선택한 후에 진행하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;360&quot; data-filename=&quot;2_EULA.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3Kcph/btq5JCN6Cn7/pZ2JWqSXknI7zfzWBU2j00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3Kcph/btq5JCN6Cn7/pZ2JWqSXknI7zfzWBU2j00/img.png&quot; data-alt=&quot;사용권 계약&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3Kcph/btq5JCN6Cn7/pZ2JWqSXknI7zfzWBU2j00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3Kcph%2Fbtq5JCN6Cn7%2FpZ2JWqSXknI7zfzWBU2j00%2Fimg.png&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;360&quot; data-filename=&quot;2_EULA.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사용권 계약&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;화면의 sudo&amp;nbsp;mv&amp;nbsp;/data/transmission/downloads/complete/&amp;nbsp;버튼을 누르고 설치를 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;360&quot; data-filename=&quot;3_Path.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cy05Dr/btq5LXYLatX/kV8xqDX3K9HbgN4ha2ZMI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cy05Dr/btq5LXYLatX/kV8xqDX3K9HbgN4ha2ZMI0/img.png&quot; data-alt=&quot;설치 위치 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cy05Dr/btq5LXYLatX/kV8xqDX3K9HbgN4ha2ZMI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcy05Dr%2Fbtq5LXYLatX%2FkV8xqDX3K9HbgN4ha2ZMI0%2Fimg.png&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;360&quot; data-filename=&quot;3_Path.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;설치 위치 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설치 경로는 기본 경로를 사용하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;360&quot; data-filename=&quot;4_Options.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc2Iqq/btq5GZQCmpG/ZjW1iLvC8iuvTaQRCpRUR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc2Iqq/btq5GZQCmpG/ZjW1iLvC8iuvTaQRCpRUR1/img.png&quot; data-alt=&quot;설치 옵션 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc2Iqq/btq5GZQCmpG/ZjW1iLvC8iuvTaQRCpRUR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc2Iqq%2Fbtq5GZQCmpG%2FZjW1iLvC8iuvTaQRCpRUR1%2Fimg.png&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;360&quot; data-filename=&quot;4_Options.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;설치 옵션 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정 데이터의 위치와 NTFS 색인 사용 방식을 선택할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설정 및 데이터 위치는 기본 값인 &lt;b&gt;%APPDATA%\Everything&lt;/b&gt;을 사용하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;NTFS 색인 사용은 &lt;b&gt;Everything 서비스 설치&lt;/b&gt;나 &lt;b&gt;관리자 권한으로 실행&lt;/b&gt; 중 하나를 선택하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Everything에서 추천하는 방법은 Everything 서비스 설치입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;360&quot; data-filename=&quot;5_Options.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKN9zw/btq5OSIYZdk/bxKrktQ2ckJrqreMdj1N90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKN9zw/btq5OSIYZdk/bxKrktQ2ckJrqreMdj1N90/img.png&quot; data-alt=&quot;부가 설치 옵션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKN9zw/btq5OSIYZdk/bxKrktQ2ckJrqreMdj1N90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKN9zw%2Fbtq5OSIYZdk%2FbxKrktQ2ckJrqreMdj1N90%2Fimg.png&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;360&quot; data-filename=&quot;5_Options.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;부가 설치 옵션&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;부가적인 설치 옵션은 기본값을 사용하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;빠른실행을 사용하고 있다면 빠른실행 바로가기 생성을 추가해도 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block; text-align: center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-6598061204302497&quot; data-ad-slot=&quot;8320619864&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;부가적인 설치 옵션을 선택한 후 설치를 누르면 간단하게 설치가 완료됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설치 이후에 Everything을 실행하고 검색을 원하는 키워드를 입력하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;657&quot; data-filename=&quot;6_Everything.gif&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yT1K6/btq5Mn32Hxq/ZQda3WBvevdxbkwPame1W1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yT1K6/btq5Mn32Hxq/ZQda3WBvevdxbkwPame1W1/img.gif&quot; data-alt=&quot;Everything 검색&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yT1K6/btq5Mn32Hxq/ZQda3WBvevdxbkwPame1W1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/yT1K6/btq5Mn32Hxq/ZQda3WBvevdxbkwPame1W1/img.gif&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;657&quot; data-filename=&quot;6_Everything.gif&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Everything 검색&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;입력하자마자 곧바로 검색 결과를 보여줄 정도로 빠른 속도를 보여줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;윈도우의 기본 검색보다 훨씬 빠른 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Everything을 사용하면 파일 위치를 기억하지 못해도 빠르게 파일을 찾을 수 있게 됩니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Windows/Tip&amp;amp;Tech</category>
      <category>Everything</category>
      <category>NTFS</category>
      <category>Windows Search</category>
      <category>검색</category>
      <category>에브리씽</category>
      <category>윈도우 검색</category>
      <category>파일 검색</category>
      <category>폴더 검색</category>
      <author>psychoria</author>
      <guid isPermaLink="true">https://psychoria.tistory.com/779</guid>
      <comments>https://psychoria.tistory.com/779#entry779comment</comments>
      <pubDate>Thu, 27 May 2021 00:00:32 +0900</pubDate>
    </item>
  </channel>
</rss>