<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>기록하는 프로그래머</title>
    <link>https://jong-bae.tistory.com/</link>
    <description>네이버 블로그에서 넘어왔어요!!
소소한 생각정리</description>
    <language>ko</language>
    <pubDate>Thu, 13 Aug 2026 18:11:22 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>종벌 </managingEditor>
    <image>
      <title>기록하는 프로그래머</title>
      <url>https://tistory1.daumcdn.net/tistory/5898215/attach/853b7845e99943f99a5907b8d4291cf8</url>
      <link>https://jong-bae.tistory.com</link>
    </image>
    <item>
      <title>[Jenkins] 2.541 Update, new GPG key 갱신 필요</title>
      <link>https://jong-bae.tistory.com/134</link>
      <description>&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/jenkins-2.541-D24939?logo=jenkins&amp;amp;logoColor=fff&amp;amp;style=flat-square&quot; alt=&quot;jenkins&quot; /&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;&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;Jenkins 업데이트를 진행했더니 아래와 같은 GPG key 에러가 발생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1769475802126&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Public key for jenkins-2.541.1-1.noarch.rpm is not installed
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Error: GPG check FAILED&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;젠킨스 업데이트 변경사항을 확인하기 위해 찾아 들어갔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시 새로운 GPG key 가 나왔으니 새로 설치하고 업데이트 하라고 공지 되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yGeGa/dJMcafSXBez/CYnkZtq9KyqAamCsemAMS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yGeGa/dJMcafSXBez/CYnkZtq9KyqAamCsemAMS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yGeGa/dJMcafSXBez/CYnkZtq9KyqAamCsemAMS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyGeGa%2FdJMcafSXBez%2FCYnkZtq9KyqAamCsemAMS0%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;204&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;204&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Jenkins ChangeLog 참고&lt;/blockquote&gt;
&lt;figure id=&quot;og_1769475820035&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;Jenkins 2.543 and 2.541.1: New Linux Repository Signing Keys&quot; data-og-description=&quot;This article announces new Linux repository signing keys. Repository signing keys will change with the release of Jenkins weekly 2.543 and Jenkins LTS 2.541.1. The previous repository signing keys will not be used after the release of Jenkins weekly 2.542.&quot; data-og-host=&quot;www.jenkins.io&quot; data-og-source-url=&quot;https://www.jenkins.io/blog/2025/12/23/repository-signing-keys-changing/&quot; data-og-url=&quot;https://www.jenkins.io/blog/2025/12/23/repository-signing-keys-changing/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/WTU1n/dJMb8YpPTG9/f149WetKyDeMqXSDgywTD1/img.png?width=938&amp;amp;height=313&amp;amp;face=148_82_222_164,https://scrap.kakaocdn.net/dn/qrRkQ/dJMb8UHJGmg/Wg0tykTQPPRMqvhK6O2BjK/img.png?width=938&amp;amp;height=313&amp;amp;face=148_82_222_164,https://scrap.kakaocdn.net/dn/bpkIEV/dJMb8UHJGmh/i4mJxvahuKMLtZCXXEjYoK/img.jpg?width=1280&amp;amp;height=1243&amp;amp;face=496_474_1016_1042&quot;&gt;&lt;a href=&quot;https://www.jenkins.io/blog/2025/12/23/repository-signing-keys-changing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.jenkins.io/blog/2025/12/23/repository-signing-keys-changing/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/WTU1n/dJMb8YpPTG9/f149WetKyDeMqXSDgywTD1/img.png?width=938&amp;amp;height=313&amp;amp;face=148_82_222_164,https://scrap.kakaocdn.net/dn/qrRkQ/dJMb8UHJGmg/Wg0tykTQPPRMqvhK6O2BjK/img.png?width=938&amp;amp;height=313&amp;amp;face=148_82_222_164,https://scrap.kakaocdn.net/dn/bpkIEV/dJMb8UHJGmh/i4mJxvahuKMLtZCXXEjYoK/img.jpg?width=1280&amp;amp;height=1243&amp;amp;face=496_474_1016_1042');&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;Jenkins 2.543 and 2.541.1: New Linux Repository Signing Keys&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This article announces new Linux repository signing keys. Repository signing keys will change with the release of Jenkins weekly 2.543 and Jenkins LTS 2.541.1. The previous repository signing keys will not be used after the release of Jenkins weekly 2.542.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.jenkins.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;&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;&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;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1769476383426&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Debian/Ubuntu LTS release
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2026.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc &amp;gt; /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list &amp;gt; /dev/null
  
  
# Red Hat/CentOS LTS release
sudo rpm --import https://pkg.jenkins.io/rpm-stable/jenkins.io-2026.key&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 다시 Jenkins 업데이트를 수행하면 문제 없이 업데이트 되는 것을 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1769475864280&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Total                                                                                       15 MB/s |  92 MB     00:06
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                   1/1
  Running scriptlet: jenkins-2.541.1-1.noarch                                                                          1/1
  Running scriptlet: jenkins-2.541.1-1.noarch                                                                          1/2
  Upgrading        : jenkins-2.541.1-1.noarch                                                                          1/2
  Running scriptlet: jenkins-2.541.1-1.noarch                                                                          1/2
  Running scriptlet: jenkins-2.528.1-1.1.noarch                                                                        2/2
  Cleanup          : jenkins-2.528.1-1.1.noarch                                                                        2/2
  Running scriptlet: jenkins-2.528.1-1.1.noarch                                                                        2/2
  Verifying        : jenkins-2.541.1-1.noarch                                                                          1/2
  Verifying        : jenkins-2.528.1-1.1.noarch                                                                        2/2

Upgraded:
  jenkins-2.541.1-1.noarch&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Jenkins</category>
      <category>2.541</category>
      <category>Jenkins</category>
      <category>new GPG key</category>
      <category>update</category>
      <category>젠킨스</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/134</guid>
      <comments>https://jong-bae.tistory.com/134#entry134comment</comments>
      <pubDate>Tue, 27 Jan 2026 10:15:43 +0900</pubDate>
    </item>
    <item>
      <title>[SVN] svnsync 동기화 URL relocate 하기</title>
      <link>https://jong-bae.tistory.com/133</link>
      <description>&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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&gt;&lt;img src=&quot;https://img.shields.io/badge/subversion-809CC9?logo=subversion&amp;amp;logoColor=fff&amp;amp;style=flat-square&quot; alt=&quot;subversion&quot; /&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사내 레거시 사이트 중에 svn 을 사용하는 프로젝트가 하나 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발쪽에서 svn 에 커밋하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외 실제 운영 서버 svn 서버 레파지토리에 svnsync 로 자동 update 하게 설정이 되어 있었다.&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;개발에서 커밋하는 svn 도메인이 변경되어 이를 변경하고자 한다.&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 svnsync 가 어떻게 설정되어있는지 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1764234614174&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; svn propget --revprop -r0 svn:sync-from-url file:///D:/repository/project
https://legacy.domain.com/svn/project&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;해당 레파지토리의 연결된 svn 주소가 출력된다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1764234777080&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; svn propdel --revprop -r0 svn:sync-from-url  file:///D:/repository/project
property 'svn:sync-from-url' deleted from repository revision 0&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;변경된 도메인으로 설정해준 후 다시 propget 해보면 변경된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1764234921025&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; svn propset --revprop -r0 svn:sync-from-url https://svn.domain.com/svn/project file:///D:/repository/project
property 'svn:sync-from-url' set on repository revision 0&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후에 다시 동기화 시켜주면 변경 끝.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1764234999494&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; svnsync sync file:///D:/repository/project&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>형상관리/SVN</category>
      <category>relocate</category>
      <category>SVN</category>
      <category>svnsync</category>
      <category>형상관리</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/133</guid>
      <comments>https://jong-bae.tistory.com/133#entry133comment</comments>
      <pubDate>Thu, 27 Nov 2025 18:18:45 +0900</pubDate>
    </item>
    <item>
      <title>[Git] fork 못하는 private repo clone 해오기.</title>
      <link>https://jong-bae.tistory.com/132</link>
      <description>&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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;&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;조직 깃헙에서 내가 만든 모듈을 내 개인 repo에도 게시하고 싶을때가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 조직 깃헙은 private repo 라서&amp;nbsp; fork 가 disabled 처리 되어 있어서 할수 없어서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;73&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJ8VUt/dJMcagqlTM3/Jk89suAV4LMGxsTXqdtW80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJ8VUt/dJMcagqlTM3/Jk89suAV4LMGxsTXqdtW80/img.png&quot; data-alt=&quot;fork 못함 ㅠㅠ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJ8VUt/dJMcagqlTM3/Jk89suAV4LMGxsTXqdtW80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJ8VUt%2FdJMcagqlTM3%2FJk89suAV4LMGxsTXqdtW80%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;435&quot; height=&quot;73&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;73&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;fork 못함 ㅠㅠ&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1763362044076&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gg@PARKJB MINGW64 /d/GitHub
$ git clone --mirror https://github.com/조직/Jenkins-Pipeline-Libraries.git
Cloning into bare repository 'Jenkins-Pipeline-Libraries.git'...
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 16 (delta 3), reused 13 (delta 3), pack-reused 0 (from 0)
Receiving objects: 100% (16/16), done.
Resolving deltas: 100% (3/3), done.&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;먼저 조직에 repo 를 clone --mirror 를 통해 복사한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 repository명.git 폴더가 복사떠진다.&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1763362113545&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gg@PARKJB MINGW64 /d/GitHub
$ cd Jenkins-Pipeline-Libraries.git&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;복사떠진 폴더로 이동해서 내 repo로 push 해주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1763362174545&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gg@PARKJB MINGW64 /d/GitHub/Jenkins-Pipeline-Libraries.git (BARE:main)
$ git push --mirror https://github.com/개인/Jenkins-Pipeline-Libraries.git
Enumerating objects: 16, done.
Counting objects: 100% (16/16), done.
Delta compression using up to 12 threads
Compressing objects: 100% (11/11), done.
Writing objects: 100% (16/16), 2.99 KiB | 2.99 MiB/s, done.
Total 16 (delta 3), reused 16 (delta 3), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (3/3), done.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>형상관리/Git</category>
      <category>clone</category>
      <category>copy</category>
      <category>Git</category>
      <category>github</category>
      <category>MIRROR</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/132</guid>
      <comments>https://jong-bae.tistory.com/132#entry132comment</comments>
      <pubDate>Mon, 17 Nov 2025 15:51:58 +0900</pubDate>
    </item>
    <item>
      <title>[IntelliJ] Artifacts recursion directory 문제해결.(feat.war_exploded)</title>
      <link>https://jong-bae.tistory.com/131</link>
      <description>&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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&gt;&lt;img src=&quot;https://img.shields.io/badge/intellijidea-2024.3.7-0071C5?logo=intellijidea&amp;amp;logoColor=fff&amp;amp;style=flat-square&quot; alt=&quot;intellijidea&quot; /&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring + 외장 Tomcat 으로 동작하는 프로젝트가 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초반에 로컬에서 인텔리제이로 테스트할때는 속도가 꽤 좋았다. (springboot&amp;nbsp; 내장 tomcat에 비하면 떨어지지만)&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드하고 클래스파일 갱신하는데&amp;nbsp;진짜&amp;nbsp; 5분 이상 걸리는 것이다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;한가지 의문점은 초반에는 이정도로 느리지 않았다는 것이다. (빌드+톰캣 배포+실행 까지 2분 내 걸리긴 했다만...)&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하루종일 클래스를 갱신하거나 재배포 하니까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배포파일을 톰캣에 올리기만 하는데 왜 이렇게 느릴까란 생각에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tomcat Catalina log 를 열어보니 이상한 경로가 중복적으로 보이면서 여유공간이 부족해 캐시크기를 늘리라는 것이었다.&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;그래서 배포된 artifacts 폴더를 한번 열어봤다.&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;&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;&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK8p5B/dJMcafx8Ib5/ie9xoDR2PUtxmCv6XnVdi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK8p5B/dJMcafx8Ib5/ie9xoDR2PUtxmCv6XnVdi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK8p5B/dJMcafx8Ib5/ie9xoDR2PUtxmCv6XnVdi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK8p5B%2FdJMcafx8Ib5%2Fie9xoDR2PUtxmCv6XnVdi0%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;473&quot; height=&quot;542&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;542&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;&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;배포파일이 classes 폴더 하위로 계속 쌓여있는 것이 아닌가...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1762324634652&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;classes/
  └─ artifacts/
      └─ Project_war_exploded/
          └─ WEB-INF/
              └─ classes/
                  └─ artifacts/
                      └─ ... 무한 순환 ...&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인은 무엇이었을까?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 프로젝트의 &lt;span style=&quot;color: #ee2323;&quot;&gt;artifacts&amp;nbsp; output directory&lt;/span&gt; 는 다음과 같았다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1762325955677&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;D:\workspace\Project\classes\artifacts\Project_war_exploded&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디렉토리 경로 가운데 있는 classes 경로에 아티팩트를 생성했기 때문에 문제를 일으킨건데&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;b&gt;프로젝트 빌드가 되면 ROOT/classes 경로에 컴파일된 클래스들을 생성해 놓고&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;아티팩트 output directory/WEB-INF/classes 에 복사한다.&lt;/b&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;b&gt;근데 그 아티팩트가 classes 경로에 생성되었으니 최초 생성시에는 문제가 되지 않으나&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다음번 빌드할때 이것이 복사되어&amp;nbsp; 아티팩트내에 아티팩트가 또 생성이 된 상태가 되고&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이것이 반복되면 그 아래로 계속 복사가 되게 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1762329892767&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;D:\workspace\Project\classes\artifacts\Project_war_exploded/WEB-INF/classes/artifacts/Project_war_exploded/...&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 이것이 쌓이고 쌓이다 보면&amp;nbsp;점차 배포 파일 자체가 커져 아티팩트를 생성하는데&amp;nbsp; 오래 걸리게 되고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;톰캣이 힘들어지게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(파일 사이즈 봤더니 2기가가 넘었음 ^^;;)&lt;br /&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 아티팩트 생성위치를 바꿔주고 다시 빌드해서 해결 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1762330107794&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;D:\workspace\Project\output\artifacts\Project_war_exploded&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tools/IntelliJ</category>
      <category>Artifacts</category>
      <category>Bug</category>
      <category>build</category>
      <category>complie</category>
      <category>error</category>
      <category>intellij</category>
      <category>recursion</category>
      <category>tomcat</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/131</guid>
      <comments>https://jong-bae.tistory.com/131#entry131comment</comments>
      <pubDate>Wed, 5 Nov 2025 17:14:59 +0900</pubDate>
    </item>
    <item>
      <title>[Jenkins] docker build 수행시 권한 문제 해결.(permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock)</title>
      <link>https://jong-bae.tistory.com/130</link>
      <description>&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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&gt;&lt;img src=&quot;https://img.shields.io/badge/jenkins-2.528-D24939?logo=jenkins&amp;amp;logoColor=fff&amp;amp;style=flat-square&quot; alt=&quot;jenkins&quot; /&gt;&lt;img src=&quot;https://img.shields.io/badge/docker-28.5-2496ED?logo=docker&amp;amp;logoColor=fff&amp;amp;style=flat-square&quot; alt=&quot;docker&quot; /&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;&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;젠킨스 파이프라인 Jenkinsfile 을 이용해 도커 빌드를 해야하는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761891458063&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[Pipeline] sh
+ docker build -t test:1.0 -f Dcokerfile .
ERROR: permission denied while trying to connect to the Docker daemon socket at 
unix:///var/run/docker.sock: Head &quot;http://%2Fvar%2Frun%2Fdocker.sock/_ping&quot;: 
dial unix /var/run/docker.sock: connect: permission denied&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도커 데몬은 root 권한에서 실행하며 /var/run/docker.sock 의 소유자는&amp;nbsp; root:docker 이다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 젠킨스가 docker 를 수행하려고 하면 권한 에러가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 젠킨스를 docker 그룹에 포함시키면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761891704350&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;usermod -aG docker jenkins&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;pre id=&quot;code_1761891808861&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[root@localhost /]# id jenkins
uid=993(jenkins) gid=989(jenkins) groups=989(jenkins),986(docker)&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;/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;다시 젠킨스 job 을 수행하면 아까의 권한 문제는 해결 되고 도커 이미지 빌드가 잘 되는 것을 확인 할 수 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권한 그룹에 추가하는 것 말고도 docker.sock 파일의 권한을 666 으로 주는 경우도 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Jenkins</category>
      <category>docker</category>
      <category>docker build</category>
      <category>Jenkins</category>
      <category>Permission denied</category>
      <category>pipeline</category>
      <category>usermod</category>
      <category>권한</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/130</guid>
      <comments>https://jong-bae.tistory.com/130#entry130comment</comments>
      <pubDate>Fri, 31 Oct 2025 15:27:24 +0900</pubDate>
    </item>
    <item>
      <title>[Docker] 리눅스에 설치하기. (RHEL 계열)</title>
      <link>https://jong-bae.tistory.com/129</link>
      <description>&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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&gt;&lt;img src=&quot;https://img.shields.io/badge/docker-2496ED?logo=docker&amp;amp;logoColor=fff&amp;amp;style=flat-square&quot; alt=&quot;docker&quot; /&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레드헷 계열 리눅스에 도커를 설치하려고 하면 내가 원하는 도커는 없고 이상한 녀석이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761640604380&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[root@localhost ~]# dnf install docker
Last metadata expiration check: 1:09:09 ago on Tue 28 Oct 2025 04:00:26 PM KST.
Dependencies resolved.
=====================================================================================================================
 Package                          Arch        Version                                           Repository      Size
=====================================================================================================================
Installing:
 podman-docker                    noarch      4:4.9.4-23.module+el8.10.0+2064+309a12a4          appstream      117 k
Installing dependencies:
 conmon                           x86_64      3:2.1.10-1.module+el8.10.0+2001+6a33db9f          appstream       57 k
 container-selinux                noarch      2:2.229.0-2.module+el8.10.0+2001+6a33db9f         appstream       70 k
 containernetworking-plugins      x86_64      1:1.4.0-6.module+el8.10.0+2001+6a33db9f           appstream       23 M
 containers-common                x86_64      2:1-82.module+el8.10.0+2001+6a33db9f              appstream      147 k
 ...
Enabling module streams:
 container-tools                              rhel8

Transaction Summary
=====================================================================================================================
Install  21 Packages&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;충돌이 날 수 있으니 모두 삭제를 수행하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761640882531&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dnf remove docker \
 docker-client \
 docker-client-latest \
 docker-common \
 docker-latest \
 docker-latest-logrotate \
 docker-logrotate \
 docker-engine \
 podman \
 runc&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761640917407&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo&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;pre id=&quot;code_1761640979337&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761640941663&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[root@localhost ~]# dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Last metadata expiration check: 0:01:05 ago on Tue 28 Oct 2025 05:21:50 PM KST.
Dependencies resolved.
=====================================================================================================================
 Package                       Arch       Version                                         Repository            Size
=====================================================================================================================
Installing:
 containerd.io                 x86_64     1.7.28-1.el8                                    docker-ce-stable      49 M
 docker-buildx-plugin          x86_64     0.29.1-1.el8                                    docker-ce-stable      17 M
 docker-ce                     x86_64     3:28.5.1-1.el8                                  docker-ce-stable      21 M
 docker-ce-cli                 x86_64     1:28.5.1-1.el8                                  docker-ce-stable     8.7 M
 docker-compose-plugin         x86_64     2.40.2-1.el8                                    docker-ce-stable      15 M
Installing dependencies:
 container-selinux             noarch     2:2.229.0-2.module+el8.10.0+2001+6a33db9f       appstream             70 k
 fuse-common                   x86_64     3.3.0-19.el8                                    baseos                21 k
 fuse-overlayfs                x86_64     1.13-1.module+el8.10.0+2001+6a33db9f            appstream             69 k
 fuse3                         x86_64     3.3.0-19.el8                                    baseos                54 k
 fuse3-libs                    x86_64     3.3.0-19.el8                                    baseos                95 k
 libcgroup                     x86_64     0.41-19.el8                                     baseos                69 k
 libslirp                      x86_64     4.4.0-2.module+el8.10.0+2001+6a33db9f           appstream             70 k
 slirp4netns                   x86_64     1.2.3-1.module+el8.10.0+2001+6a33db9f           appstream             55 k
Installing weak dependencies:
 docker-ce-rootless-extras     x86_64     28.5.1-1.el8                                    docker-ce-stable     3.4 M
Enabling module streams:
 container-tools                          rhel8

Transaction Summary
=====================================================================================================================
Install  14 Packages&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;pre id=&quot;code_1761641116870&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[root@localhost ~]# docker -v
Docker version 28.5.1, build e180ab8&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761641080681&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl enable --now docker&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;도커 공식 참고자료&lt;/blockquote&gt;
&lt;figure id=&quot;og_1761641162922&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;RHEL&quot; data-og-description=&quot;Learn how to install Docker Engine on RHEL. These instructions cover the different installation methods, how to uninstall, and next steps.&quot; data-og-host=&quot;docs.docker.com&quot; data-og-source-url=&quot;https://docs.docker.com/engine/install/rhel/&quot; data-og-url=&quot;https://docs.docker.com/engine/install/rhel/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/E3fyL/hyZLoUTkMk/s4VaeczvIafJwcb731b3gK/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260&quot;&gt;&lt;a href=&quot;https://docs.docker.com/engine/install/rhel/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.docker.com/engine/install/rhel/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/E3fyL/hyZLoUTkMk/s4VaeczvIafJwcb731b3gK/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260');&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;RHEL&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learn how to install Docker Engine on RHEL. These instructions cover the different installation methods, how to uninstall, and next steps.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.docker.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Docker</category>
      <category>docker</category>
      <category>rhel</category>
      <category>도커설치</category>
      <category>레드헷계열</category>
      <category>리눅스</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/129</guid>
      <comments>https://jong-bae.tistory.com/129#entry129comment</comments>
      <pubDate>Tue, 28 Oct 2025 17:47:09 +0900</pubDate>
    </item>
    <item>
      <title>[Oracle] Flashback Query 사용하여 삭제된 데이터 복구하기.</title>
      <link>https://jong-bae.tistory.com/128</link>
      <description>&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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&gt;&lt;img src=&quot;https://img.shields.io/badge/oracle-F80000?logo=oracle&amp;amp;logoColor=fff&amp;amp;style=flat-square&quot; alt=&quot;oracle&quot; /&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;&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;보통 Delete 쿼리를 조건절 잘못작성하여 삭제되지 말아야할 데이터가 삭제되는 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히 oracle 은 일정시간 동안,&amp;nbsp; UNDO(undo_retention) 보관시간 내에 데이터를 조회 할 수 있다.&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;예를 들어 조건절 없이&amp;nbsp; table 에 데이터를 모두 삭제했다고 치자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761011901226&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DELETE FROM sample
-- where ...&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;OMG...&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당황하지 말고 삭제 시점 전 으로 조회하여 데이터 추출하여 복구하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 내가 09:03:45 경 삭제를 했다고 치자&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761012324371&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM sample AS OF TIMESTAMP TO_TIMESTAMP('2025-10-21 09:02:00','YYYY-MM-DD HH24:MI:SS')&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 직접 날짜시분초를 작성하지 않고 SYSDATE에서 분을 빼도 된다.&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;/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761013634022&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO sample
SELECT * FROM sample AS OF TIMESTAMP TO_TIMESTAMP('2025-10-21 09:02:00','YYYY-MM-DD HH24:MI:SS')&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;이렇게 해도 상관 없겠지만&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터가 계속 인입되고 있다거나 일부만 삭제했다면 temp 테이블에 먼저 백업을 떠논 후 데이터를 넣어주는 것이 안전하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NOT EXISTS 조건 걸어서 중복 제거하고 넣어줘도 된다.&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761013856924&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE sample_tmp as
SELECT * FROM sample AS OF TIMESTAMP TO_TIMESTAMP('2025-10-21 09:02:00','YYYY-MM-DD HH24:MI:SS')&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;이렇게 temp 테이블 만들어서 빼놓고 조정을 하고 복구해도 된다.&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 UNDO 보관시간은 얼마나 되냐 궁금할 수 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761013973794&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT name, value
FROM v$parameter
WHERE name = 'undo_retention';&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;undo 유지 시간은 디폴트로 900 일 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대략 15분 (900/60) 인데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것이 15분간만 유지하겠다는 아니고 최소한 15분은 유지하려고 노력하겠다여서&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;241&quot; data-start=&quot;192&quot; data-ke-size=&quot;size18&quot;&gt;UNDO_RETENTION은 &amp;ldquo;최소 보존 목표값&amp;rdquo;일 뿐, 절대값이 아님&lt;/p&gt;
&lt;p data-end=&quot;256&quot; data-start=&quot;242&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;256&quot; data-start=&quot;242&quot; data-ke-size=&quot;size16&quot;&gt;오라클 공식 문서의 표현:&lt;/p&gt;
&lt;blockquote data-end=&quot;402&quot; data-start=&quot;257&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;402&quot; data-start=&quot;259&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;UNDO_RETENTION specifies the minimum time in seconds that Oracle attempts to retain old undo information for consistent read and flashback.&amp;rdquo;&lt;br /&gt;&lt;b&gt;&amp;lsquo;900초 동안은 최소한 유지하려고 노력하지만, 공간이 남으면 더 오래 유지한다&amp;rsquo;&lt;/b&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;467&quot; data-start=&quot;462&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;467&quot; data-start=&quot;462&quot; data-ke-size=&quot;size16&quot;&gt;따라서&lt;/p&gt;
&lt;p data-end=&quot;467&quot; data-start=&quot;462&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UNDO 테이블스페이스에 &lt;b&gt;공간 여유가 많을 경우&lt;/b&gt;,&lt;br /&gt;이전 트랜잭션의 UNDO 블록이 &lt;b&gt;덮이지 않고 그대로 남아 있음&lt;/b&gt; &amp;rarr; 그만큼 과거 시점으로 Flashback Query가 가능해지는 것이다.&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;&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;/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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Database/Oracle</category>
      <category>flashback</category>
      <category>Flashback Query</category>
      <category>Oracle</category>
      <category>데이터복구</category>
      <category>복구</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/128</guid>
      <comments>https://jong-bae.tistory.com/128#entry128comment</comments>
      <pubDate>Tue, 21 Oct 2025 11:39:28 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] PuTTy 테마 색상 바꾸기 (기존 세션까지 바꾸기)</title>
      <link>https://jong-bae.tistory.com/127</link>
      <description>&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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;&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;&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;리눅스 서버 관리 툴로 Putty 를 가장 많이 사용하는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/dehaCM/dJMb9MJuMZu/uHXoAq7TKkqZwVLycRB1nk/putty-color-themes-master.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;putty-color-themes-master.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.45MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1756964626430&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;putty-color-themes/images/readme.md at master &amp;middot; AlexAkulov/putty-color-themes&quot; data-og-description=&quot;PuTTY Color Themes. Contribute to AlexAkulov/putty-color-themes development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/AlexAkulov/putty-color-themes/blob/master/images/readme.md&quot; data-og-url=&quot;https://github.com/AlexAkulov/putty-color-themes/blob/master/images/readme.md&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/O4foh/hyZGaCai4z/mSquCbeu1zkgEqsVkaGx51/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bVu3rC/hyZI1Kl9Sp/Dx87FdeLniFS9a2teC1flk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/AlexAkulov/putty-color-themes/blob/master/images/readme.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/AlexAkulov/putty-color-themes/blob/master/images/readme.md&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/O4foh/hyZGaCai4z/mSquCbeu1zkgEqsVkaGx51/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bVu3rC/hyZI1Kl9Sp/Dx87FdeLniFS9a2teC1flk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;putty-color-themes/images/readme.md at master &amp;middot; AlexAkulov/putty-color-themes&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;PuTTY Color Themes. Contribute to AlexAkulov/putty-color-themes development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;&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;직접 해당 깃허브에서 다운로드 받으셔도 되고 제가 올려놓은 zip 파일 다운로드 받으셔도 됩니다.&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;&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;받으신 zip 파일 압축을 풀고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;_puttycolor.js 파일만&amp;nbsp; 기존 putty 설치 경로에 복붙해줍니다.&lt;/b&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDTcl4/btsQkZQQpc0/nEPa8JXukQhZKiqWqkO9g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDTcl4/btsQkZQQpc0/nEPa8JXukQhZKiqWqkO9g0/img.png&quot; data-alt=&quot;zip 압축 해제 파일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDTcl4/btsQkZQQpc0/nEPa8JXukQhZKiqWqkO9g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDTcl4%2FbtsQkZQQpc0%2FnEPa8JXukQhZKiqWqkO9g0%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;557&quot; height=&quot;602&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;zip 압축 해제 파일&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;253&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coAqOG/btsQkYxBZQ5/7bUdJ7VUrgbEA3CoxJ63wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coAqOG/btsQkYxBZQ5/7bUdJ7VUrgbEA3CoxJ63wk/img.png&quot; data-alt=&quot;putty 설치경로&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coAqOG/btsQkYxBZQ5/7bUdJ7VUrgbEA3CoxJ63wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoAqOG%2FbtsQkYxBZQ5%2F7bUdJ7VUrgbEA3CoxJ63wk%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;253&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;253&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;putty 설치경로&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 위 깃허브 링크에서 테마 색상을 보신 뒤&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 색상의 레지스트리를 실행하시면 일단 putty 의 기본 default 색상은 변경되게 됩니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5QuUR/btsQkJmZbbq/IlY23dhpKN0cO4pxYIqbE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5QuUR/btsQkJmZbbq/IlY23dhpKN0cO4pxYIqbE0/img.png&quot; data-alt=&quot;putty 기본 색상 변경 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5QuUR/btsQkJmZbbq/IlY23dhpKN0cO4pxYIqbE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5QuUR%2FbtsQkJmZbbq%2FIlY23dhpKN0cO4pxYIqbE0%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;442&quot; height=&quot;430&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;putty 기본 색상 변경 확인&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;&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;/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0r4Tg/btsQk2NnY8N/4fKv8KkqZSq5QM1iSsOc11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0r4Tg/btsQk2NnY8N/4fKv8KkqZSq5QM1iSsOc11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0r4Tg/btsQk2NnY8N/4fKv8KkqZSq5QM1iSsOc11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0r4Tg%2FbtsQk2NnY8N%2F4fKv8KkqZSq5QM1iSsOc11%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;544&quot; height=&quot;420&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;420&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 문제는 기존에 저장되어있는 세션들은 색상이 바뀌질 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 일괄로 변경된 컬러로 바꿔주는 스크립트를 아래에 공유 합니당 (w GPT)&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1756965321313&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# PuTTY/KiTTY 기존 세션에 Default Settings의 Colour0~21을 강제 복사
# (32/64비트/ KiTTY 레지스트리 경로 모두 시도)

$roots = @(
  'HKCU:\Software\SimonTatham\PuTTY\Sessions',                  # 64비트 PuTTY
  'HKCU:\Software\WOW6432Node\SimonTatham\PuTTY\Sessions',      # 32비트 PuTTY
  'HKCU:\Software\9bis.com\KiTTY\Sessions'                      # KiTTY(레지스트리 사용시)
)

$colourKeys = 0..21 | ForEach-Object { &quot;Colour$_&quot; }

foreach ($root in $roots) {
  if (!(Test-Path $root)) { continue }

  $def = Join-Path $root 'Default%20Settings'
  if (!(Test-Path $def)) { Write-Host &quot;Default Settings 없음 &amp;rarr; $root&quot;; continue }

  # Default Settings에서 색상 읽기
  $vals = @{}
  foreach ($k in $colourKeys) {
    try {
      $v = (Get-ItemProperty -Path $def -Name $k -ErrorAction Stop).$k
      if ($null -ne $v) { $vals[$k] = $v }
    } catch {}
  }
  if ($vals.Count -eq 0) { Write-Host &quot;Colour* 없음 &amp;rarr; $def&quot;; continue }

  # 모든 세션에 덮어쓰기
  Get-ChildItem $root | Where-Object { $_.PSChildName -ne 'Default%20Settings' } | ForEach-Object {
    $path = $_.PsPath
    foreach ($k in $colourKeys) {
      New-ItemProperty -Path $path -Name $k -Value $vals[$k] -PropertyType String -Force | Out-Null
    }
    New-ItemProperty -Path $path -Name UseSystemColours -Value 0 -PropertyType DWord -Force | Out-Null
    Write-Host &quot;색상 적용 &amp;rarr; $($_.PSChildName)&quot;
  }
}
Write-Host &quot;완료. PuTTY 다시 실행해서 확인하세요.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 쉘 스크립트를 복사해서 PowerShell 에 복붙하시면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;putty 의 모든 세션이 내가 고른 테마색상으로 일괄 치환됩니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;754&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTGlaR/btsQiKN0gWC/yG9mTiUbyx9jUfcmHLXINk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTGlaR/btsQiKN0gWC/yG9mTiUbyx9jUfcmHLXINk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTGlaR/btsQiKN0gWC/yG9mTiUbyx9jUfcmHLXINk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTGlaR%2FbtsQiKN0gWC%2FyG9mTiUbyx9jUfcmHLXINk%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;766&quot; height=&quot;754&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;754&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;&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;/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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1756964564855&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;PuTTY Color Themes (색상 테마 변경)&quot; data-og-description=&quot;터미널을 오랫동안 보면 눈의 피로도가 높아집니다. 피로도가 적은 색상으로 변경해서 사용하면 좋습니다. PuTTY Color Themes https://github.com/AlexAkulov/putty-color-themes GitHub - AlexAkulov/putty-color-themes: PuTTY&quot; data-og-host=&quot;zosystem.tistory.com&quot; data-og-source-url=&quot;https://zosystem.tistory.com/329&quot; data-og-url=&quot;https://zosystem.tistory.com/329&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/8769m/hyZIU5xjsk/71Rgqp8YeJlGGENglhlfRK/img.png?width=667&amp;amp;height=335&amp;amp;face=0_0_667_335,https://scrap.kakaocdn.net/dn/PGK32/hyZGWJSEQI/psggmbYODBZ2eAuyon1cE0/img.png?width=667&amp;amp;height=335&amp;amp;face=0_0_667_335,https://scrap.kakaocdn.net/dn/0bxdM/hyZG6MuwWo/McZ1uySKnHln5RJ3WXdTY1/img.png?width=988&amp;amp;height=804&amp;amp;face=0_0_988_804&quot;&gt;&lt;a href=&quot;https://zosystem.tistory.com/329&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zosystem.tistory.com/329&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/8769m/hyZIU5xjsk/71Rgqp8YeJlGGENglhlfRK/img.png?width=667&amp;amp;height=335&amp;amp;face=0_0_667_335,https://scrap.kakaocdn.net/dn/PGK32/hyZGWJSEQI/psggmbYODBZ2eAuyon1cE0/img.png?width=667&amp;amp;height=335&amp;amp;face=0_0_667_335,https://scrap.kakaocdn.net/dn/0bxdM/hyZG6MuwWo/McZ1uySKnHln5RJ3WXdTY1/img.png?width=988&amp;amp;height=804&amp;amp;face=0_0_988_804');&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;PuTTY Color Themes (색상 테마 변경)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;터미널을 오랫동안 보면 눈의 피로도가 높아집니다. 피로도가 적은 색상으로 변경해서 사용하면 좋습니다. PuTTY Color Themes https://github.com/AlexAkulov/putty-color-themes GitHub - AlexAkulov/putty-color-themes: PuTTY&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zosystem.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;</description>
      <category>Server/Linux</category>
      <category>COLOR</category>
      <category>putty</category>
      <category>Theme</category>
      <category>색상변경</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/127</guid>
      <comments>https://jong-bae.tistory.com/127#entry127comment</comments>
      <pubDate>Thu, 4 Sep 2025 15:05:06 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] rsync - 리눅스간 파일/폴더 전송.</title>
      <link>https://jong-bae.tistory.com/126</link>
      <description>&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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;&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;리눅스간 파일, 폴더를 복사할때 scp 를 이용해 통째로 복사를 수행한적이 있다.&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;최초로 데이터를 복사할때는 scp 를 써도 무방하지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 데이터가 있는 상태에서 scp 를 사용하면 전체 파일을 전부 복사해서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;u&gt;즉, 불필요한 전송 리소스를 사용하게 되는 것.&lt;/u&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;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1756172740590&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;[Linux] scp - 리눅스간 파일/폴더 전송.&quot; data-og-description=&quot;서로 다른 리눅스 서버간 파일을 통째로 옮겨야 해서&amp;nbsp;scp (secure copy) 를 써보기로 했다.(얘 없었으면 ftp로 내컴에 옮긴담에 목적지 서버에 밀어 넣는 짓을 하고 있었겠지...? ㅋ)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scp 대상파&quot; data-og-host=&quot;jong-bae.tistory.com&quot; data-og-source-url=&quot;https://jong-bae.tistory.com/34&quot; data-og-url=&quot;https://jong-bae.tistory.com/34&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/7AcDH/hyZDPDZogS/nqGITCURTMJ25pPrKvMdCK/img.jpg?width=249&amp;amp;height=297&amp;amp;face=0_0_249_297,https://scrap.kakaocdn.net/dn/czKuLw/hyZDL2DvWA/nKVmVpCdIHt0qGlMBkpog0/img.jpg?width=249&amp;amp;height=297&amp;amp;face=0_0_249_297&quot;&gt;&lt;a href=&quot;https://jong-bae.tistory.com/34&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jong-bae.tistory.com/34&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/7AcDH/hyZDPDZogS/nqGITCURTMJ25pPrKvMdCK/img.jpg?width=249&amp;amp;height=297&amp;amp;face=0_0_249_297,https://scrap.kakaocdn.net/dn/czKuLw/hyZDL2DvWA/nKVmVpCdIHt0qGlMBkpog0/img.jpg?width=249&amp;amp;height=297&amp;amp;face=0_0_249_297');&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;[Linux] scp - 리눅스간 파일/폴더 전송.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;서로 다른 리눅스 서버간 파일을 통째로 옮겨야 해서&amp;nbsp;scp (secure copy) 를 써보기로 했다.(얘 없었으면 ftp로 내컴에 옮긴담에 목적지 서버에 밀어 넣는 짓을 하고 있었겠지...? ㅋ)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scp 대상파&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jong-bae.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 rsync 를 사용하여 없는 파일 또는 업데이트 되어질 파일만 전송해보려고 한다.&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;rsync&lt;/b&gt;&lt;/blockquote&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;사용법은 간단한 옵션을 부여하여&amp;nbsp; 중복, 업데이트 만 체크할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1756173089526&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rsync -avz /home/test/ user@127.0.0.1:/home/test2&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;378&quot; data-start=&quot;370&quot; data-ke-size=&quot;size16&quot;&gt;옵션 설명:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;557&quot; data-start=&quot;379&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;422&quot; data-start=&quot;379&quot;&gt;-a : 권한, 시간, 심볼릭 링크 등 보존 (archive 모드)&lt;/li&gt;
&lt;li data-end=&quot;449&quot; data-start=&quot;423&quot;&gt;-v : verbose (상세 출력)&lt;/li&gt;
&lt;li data-end=&quot;468&quot; data-start=&quot;450&quot;&gt;-z : 전송 시 압축&lt;/li&gt;
&lt;li data-end=&quot;468&quot; data-start=&quot;450&quot;&gt;-n : 전송은 하지 않고 실행결과만 출력 (시뮬레이션 모드)&lt;/li&gt;
&lt;li data-end=&quot;518&quot; data-start=&quot;469&quot;&gt;--ignore-existing : 대상에 이미 존재하는 파일은 덮어쓰지 않음&lt;/li&gt;
&lt;li data-end=&quot;557&quot; data-start=&quot;519&quot;&gt;--update : 수정 시간이 더 최신인 경우에만 덮어씀&lt;/li&gt;
&lt;/ul&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;데이터 전송전에 복사될 파일들을 체크하기 위해 -n 을 붙여주면 실제 전송은 수행하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 서버내에서 복사시에는 -z 압축 전송 옵션은 굳이 필요 없어보인다. (타 서버에 옮길때는 좋음)&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1756173290377&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 새로운 파일만 추가 (기존 파일은 절대 덮어쓰지 않음)
rsync -avz --ignore-existing /home/test/ user@127.0.0.1:/home/test2

# 기존 파일보다 새로운 게 있으면 업데이트
rsync -avz --update /home/test/ user@127.0.0.1:/home/test2

# 시뮬레이션만 (어떤 파일이 이동될지 확인)
rsync -avzn --update /home/test/ user@127.0.0.1:/home/test2
rsync -avzn --ignore-existing /home/test/ user@127.0.0.1:/home/test2&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-avzn 옵션으로 중복, 업데이트 시뮬레이션 해보면 어떤 파일들이 추가되고 변경되었는지 확인 할 수 있고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-n 옵션을 제거하고 수행하면 시뮬레이션 대로 파일 전송을 수행한다.&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 최상위 폴더에서 시뮬레이션 돌려보면 파일 외에도 기존에 있는 폴더들도 다 조회되는데&amp;nbsp; 파일들만 따로 보고 싶다면 아래와 같이 grep 하여 파일만 따로 확인 하는게 좋겠다.&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1756173575962&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rsync -avzn --ignore-existing /home/test/ user@127.0.0.1:/home/test2 | grep -v '/$'
rsync -avzn --update /home/test/ user@127.0.0.1:/home/test2 | grep -v '/$'&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Server/Linux</category>
      <category>Linux</category>
      <category>rsync</category>
      <category>백업</category>
      <category>업데이트</category>
      <category>중복제거</category>
      <category>파일전송</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/126</guid>
      <comments>https://jong-bae.tistory.com/126#entry126comment</comments>
      <pubDate>Tue, 26 Aug 2025 11:01:44 +0900</pubDate>
    </item>
    <item>
      <title>[Docker] Nodejs  모듈 버전 충돌 이슈, 다운그레이드 실행하기</title>
      <link>https://jong-bae.tistory.com/125</link>
      <description>&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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&gt;&lt;img src=&quot;https://img.shields.io/badge/nodejs-17.9-5FA04E?logo=nodedotjs&amp;amp;logoColor=fff&amp;amp;style=flat-square&quot; alt=&quot;nodedotjs&quot; /&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노드 템플릿을 하나 사용하게 되어 셋팅 후 npm install 을 수행했는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 오류가 났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1755501975568&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm error code 3221225477 
npm error path D:\...\node_modules\node-sass 
npm error command failed 
npm error command C:\WINDOWS\system32\cmd.exe /d /s /c 
node scripts/install.js 
npm error A complete log of this run can be found in: C:\...\AppData\Local\npm-cache\_logs\2025-08-18T03_06_28_934Z-debug-0.log&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;node-sass의 문제인건 아는데 정확하게 뭔지 알 수 없기에 로그 파일을 찾아 열어보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1755502102952&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;verbose pkgid node-sass@7.0.3 
error code 3221225477
...&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;node-sass 7 버전으로 내 pc에 설치된&amp;nbsp; nodejs 와의 버전 호환 문제였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치된 나의 node 버전은 22였다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;121&quot; data-start=&quot;82&quot;&gt;&lt;b&gt;Node 20&lt;/b&gt; &amp;rarr; &lt;b&gt;node-sass 9.0+&lt;/b&gt; 필요&lt;/li&gt;
&lt;li data-end=&quot;161&quot; data-start=&quot;122&quot;&gt;&lt;b&gt;Node 18&lt;/b&gt; &amp;rarr; &lt;b&gt;node-sass 8.0+&lt;/b&gt; 필요&lt;/li&gt;
&lt;li data-end=&quot;200&quot; data-start=&quot;162&quot;&gt;&lt;b&gt;Node 17&lt;/b&gt; &amp;rarr; &lt;b&gt;node-sass 7.x&lt;/b&gt; 가능&lt;/li&gt;
&lt;li data-end=&quot;276&quot; data-start=&quot;201&quot;&gt;&lt;b&gt;Node 16&lt;/b&gt; &amp;rarr; &lt;b&gt;node-sass 6.x+&lt;/b&gt; 가능&lt;/li&gt;
&lt;/ul&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node 17 로 다운그레이드가 필요한 상황인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Docker&lt;/b&gt;&lt;/blockquote&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;pre id=&quot;code_1755503487153&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker pull node:17.9.1
docker run -it --name node17 -v {#템플릿경로}:/app -v ats_node_modules:/app/node_modules -w /app node:17.9.1&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;모듈 호환되는 노드17 버전을 가져온 후 실행했다.&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;템플릿 경로에서 docker 를 실행하면 경로를 .(dot) 으로 간편하게 작성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;도커 Volume 명을&amp;nbsp; 기존 템플릿 경로에 있는 폴더(node_modules)랑 동일하게 했더니&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도커 Volume 을 보는게 아니라 실제 경로를 바라보게 되었다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 도커 노드에서 npm install 을 수행하니 버전 충돌 오류 없이 잘 모듈들이 생성되었고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;템플릿을 컴파일할 gulp 로 태스크 러너가 잘 동작하는 것을 확인 했다.&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1755505044118&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# npx gulp
[08:15:41] Using gulpfile /app/gulpfile.js
[08:15:41] Starting 'default'...
[08:15:41] Starting 'clean'...
[08:15:41] Finished 'clean' after 228 ms
[08:15:41] Starting 'fileIncludeAll'...
[08:15:43] Finished 'fileIncludeAll' after 1.6 s
[08:15:43] Starting '&amp;lt;anonymous&amp;gt;'...
[08:15:43] Finished '&amp;lt;anonymous&amp;gt;' after 168 ms
[08:15:43] Starting 'scss'...
[08:15:47] Finished 'scss' after 3.68 s
[08:15:47] Starting 'browserSync'...
[08:15:47] Finished 'browserSync' after 10 ms
[08:15:47] Starting 'watch'...
[Browsersync] Access URLs:
 ----------------------------------------------
       Local: http://localhost:3000/index.html
    External: http://172.17.0.3:3000/index.html
 ----------------------------------------------
          UI: http://localhost:3001
 UI External: http://localhost:3001
 ----------------------------------------------
[Browsersync] Serving files from: ./src/.tmp
[Browsersync] Serving files from: ./src
[Browsersync] Serving files from: ./
[Browsersync] Watching files...
[Browsersync] Couldn't open browser (if you are using BrowserSync in a headless environment, you might want to set the open option to false)&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;&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;&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Docker</category>
      <category>docker</category>
      <category>gulp</category>
      <category>node</category>
      <category>nodejs</category>
      <category>다운그레이드</category>
      <category>버전충돌</category>
      <author>종벌 </author>
      <guid isPermaLink="true">https://jong-bae.tistory.com/125</guid>
      <comments>https://jong-bae.tistory.com/125#entry125comment</comments>
      <pubDate>Mon, 18 Aug 2025 17:21:15 +0900</pubDate>
    </item>
  </channel>
</rss>