|
|
@ -3,12 +3,14 @@ package main |
|
|
|
import ( |
|
|
|
"bytes" |
|
|
|
"encoding/binary" |
|
|
|
"github.com/fsnotify/fsnotify" |
|
|
|
"io" |
|
|
|
"io/fs" |
|
|
|
"os" |
|
|
|
"path/filepath" |
|
|
|
"strings" |
|
|
|
"time" |
|
|
|
|
|
|
|
"github.com/fsnotify/fsnotify" |
|
|
|
) |
|
|
|
|
|
|
|
const ( |
|
|
@ -43,6 +45,39 @@ type Watch struct { |
|
|
|
watch *fsnotify.Watcher |
|
|
|
} |
|
|
|
|
|
|
|
const ( |
|
|
|
//LOGPATH LOGPATH/time.Now().Format(FORMAT)/*.log
|
|
|
|
LOGPATH = "./" |
|
|
|
//FORMAT .
|
|
|
|
FORMAT = "20060102" |
|
|
|
//LineFeed 换行
|
|
|
|
LineFeed = "\r\n" |
|
|
|
FileName = "fileSync.log" |
|
|
|
) |
|
|
|
|
|
|
|
//以天为基准,存日志
|
|
|
|
var path = LOGPATH + time.Now().Format(FORMAT) + "_" |
|
|
|
|
|
|
|
//WriteLog return error
|
|
|
|
func WriteLog(msg string) error { |
|
|
|
var ( |
|
|
|
err error |
|
|
|
f *os.File |
|
|
|
) |
|
|
|
|
|
|
|
f, err = os.OpenFile(path+FileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) |
|
|
|
_, err = io.WriteString(f, "Tag"+"::"+msg+LineFeed) |
|
|
|
|
|
|
|
defer f.Close() |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
//IsExist 判断文件夹/文件是否存在 存在返回 true
|
|
|
|
func IsExist(f string) bool { |
|
|
|
_, err := os.Stat(f) |
|
|
|
return err == nil || os.IsExist(err) |
|
|
|
} |
|
|
|
|
|
|
|
// 收集更改了的文件
|
|
|
|
func CollectFile(File string) { |
|
|
|
ext := filepath.Ext(File) |
|
|
@ -110,8 +145,9 @@ func existPath(path string) bool { |
|
|
|
//监控目录
|
|
|
|
func (w *Watch) watchDir(dir string) { |
|
|
|
//通过Walk来遍历目录下的所有子目录
|
|
|
|
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { |
|
|
|
filepath.WalkDir(dir, func(path string, info fs.DirEntry, err error) error { |
|
|
|
//这里判断是否为目录,只需监控目录即可 目录下的文件也在监控范围内,不需要我们一个一个加
|
|
|
|
|
|
|
|
if err == nil && info.IsDir() { |
|
|
|
path, err := filepath.Abs(path) |
|
|
|
if err != nil { |
|
|
@ -129,7 +165,7 @@ func (w *Watch) watchDir(dir string) { |
|
|
|
for _, v := range AddDirs { |
|
|
|
if v != "" && existPath(v) { |
|
|
|
//通过Walk来遍历目录下的所有子目录
|
|
|
|
filepath.Walk(v, func(path string, info os.FileInfo, err error) error { |
|
|
|
filepath.WalkDir(v, func(path string, info fs.DirEntry, err error) error { |
|
|
|
//这里判断是否为目录,只需监控目录即可 目录下的文件也在监控范围内,不需要我们一个一个加
|
|
|
|
if err == nil && info.IsDir() { |
|
|
|
path, err := filepath.Abs(path) |
|
|
@ -148,6 +184,15 @@ func (w *Watch) watchDir(dir string) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//for _, v := range AddDirs {
|
|
|
|
// if v != "" && existPath(v) {
|
|
|
|
// path, err := filepath.Abs(path)
|
|
|
|
// if err != nil && !isHidden(path) {
|
|
|
|
// w.watch.Add(path)
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
// 启动文件监听goroutine
|
|
|
|
go func() { |
|
|
|
for { |
|
|
|