From bfe006338afc3c603e22bf8793f727966230e551 Mon Sep 17 00:00:00 2001 From: LHK Date: Fri, 1 Aug 2025 14:54:47 +0900 Subject: [PATCH] =?UTF-8?q?1.=20=EC=A6=9D=EB=B6=84=20=EB=B0=B1=EC=97=85=20?= =?UTF-8?q?=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95=202.=20=EC=9D=BC?= =?UTF-8?q?=EB=B0=98=20=EB=B0=B1=EC=97=85=20=ED=95=B4=EC=89=AC=20=EB=B9=84?= =?UTF-8?q?=EA=B5=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/backup/backup.go | 51 ++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/internal/backup/backup.go b/internal/backup/backup.go index a4a6d78..4838fa9 100644 --- a/internal/backup/backup.go +++ b/internal/backup/backup.go @@ -199,7 +199,7 @@ func RunBackup(ctx context.Context, src, dst string, opts Options) error { dstInfo, err := os.Stat(dstPath) fileExists := err == nil - if fileExists && !opts.Force { + if !opts.Force { if opts.Incremental { // 증분 백업 모드에서는 메타데이터를 확인 srcInfo, err := os.Stat(srcPath) @@ -230,30 +230,32 @@ func RunBackup(ctx context.Context, src, dst string, opts Options) error { meta.Files[relPath] = newValue } else { - // 일반 모드에서는 크기와 수정 시간만 비교 - srcInfo, err := os.Stat(srcPath) - if err != nil { - return fmt.Errorf("원본 파일 정보를 읽을 수 없습니다: %w", err) - } + if fileExists { + // 일반 모드에서는 크기와 수정 시간만 비교 + srcInfo, err := os.Stat(srcPath) + if err != nil { + return fmt.Errorf("원본 파일 정보를 읽을 수 없습니다: %w", err) + } - switch opts.CompareMode { - case CompareTime: - if srcInfo.Size() == dstInfo.Size() && srcInfo.ModTime().Equal(dstInfo.ModTime()) { - opts.Logger.Printf("건너뜀 (시간 동일): %s\n", relPath) - continue - } - case CompareHash: - srcHash, err := calculateFileHash(srcPath) - if err != nil { - return fmt.Errorf("원본 파일 해시를 계산할 수 없습니다: %w", err) - } - dstHash, err := calculateFileHash(dstPath) - if err != nil { - return fmt.Errorf("대상 파일 해시를 계산할 수 없습니다: %w", err) - } - if srcHash == dstHash { - opts.Logger.Printf("건너뜀 (해시 동일): %s\n", relPath) - continue + switch opts.CompareMode { + case CompareTime: + if srcInfo.Size() == dstInfo.Size() && srcInfo.ModTime().Equal(dstInfo.ModTime()) { + opts.Logger.Printf("건너뜀 (시간 동일): %s\n", relPath) + continue + } + case CompareHash: + srcHash, err := calculateFileHash(srcPath) + if err != nil { + return fmt.Errorf("원본 파일 해시를 계산할 수 없습니다: %w", err) + } + dstHash, err := calculateFileHash(dstPath) + if err != nil { + return fmt.Errorf("대상 파일 해시를 계산할 수 없습니다: %w", err) + } + if srcHash == dstHash { + opts.Logger.Printf("건너뜀 (해시 동일): %s\n", relPath) + continue + } } } } @@ -263,7 +265,6 @@ func RunBackup(ctx context.Context, src, dst string, opts Options) error { if err := copyFile(srcPath, dstPath); err != nil { return fmt.Errorf("파일을 복사할 수 없습니다: %w", err) } - opts.Logger.Printf("복사됨: %s\n", relPath) }