.PHONY: all clean mac linux windows deps deploy LINUX_SERVERS = 192.168.1.240 192.168.1.252 192.168.1.253 192.168.1.254 LINUX_USER = johan LINUX_PASS = Helder06 WIN_SERVER = 192.168.1.251 WIN_USER = johan all: deps mac linux windows deploy deps: go mod tidy mac: GOOS=darwin GOARCH=amd64 go build -o bin/filescan-mac-amd64 . GOOS=darwin GOARCH=arm64 go build -o bin/filescan-mac-arm64 . GOOS=darwin GOARCH=amd64 go build -o bin/hashupdate-mac-amd64 ./cmd/hashupdate GOOS=darwin GOARCH=arm64 go build -o bin/hashupdate-mac-arm64 ./cmd/hashupdate linux: GOOS=linux GOARCH=amd64 go build -o bin/filescan-linux . GOOS=linux GOARCH=amd64 go build -o bin/hashupdate-linux ./cmd/hashupdate windows: GOOS=windows GOARCH=amd64 go build -o bin/filescan.exe . GOOS=windows GOARCH=amd64 go build -o bin/hashupdate.exe ./cmd/hashupdate clean: rm -rf bin/ deploy: deploy-linux deploy-windows deploy-linux: @echo "Deploying to Linux servers..." @for server in $(LINUX_SERVERS); do \ echo " -> $$server"; \ sshpass -p '$(LINUX_PASS)' scp -o StrictHostKeyChecking=no bin/filescan-linux bin/hashupdate-linux $(LINUX_USER)@$$server:~/ 2>/dev/null || echo " [offline]"; \ done deploy-windows: @echo "Deploying to Windows server $(WIN_SERVER)..." @mkdir -p /tmp/251c 2>/dev/null || true @umount /tmp/251c 2>/dev/null || true @mount_smbfs '//johan:%21%21Lekker69@192.168.1.251/C' /tmp/251c 2>/dev/null && \ cp bin/filescan.exe bin/hashupdate.exe /tmp/251c/Users/johan/ && \ echo " -> $(WIN_SERVER) [ok]" && \ umount /tmp/251c || echo " -> $(WIN_SERVER) [failed]" # Quick build for current platform build: go build -o bin/filescan . go build -o bin/hashupdate ./cmd/hashupdate # Run scanner locally (example) run: go run . -server test -path /tmp -dry-run # Find duplicates query dupes: @echo "Run this in ClickHouse:" @echo "SELECT hash, count(*) as cnt, groupArray(concat(folder, '/', filename)) as files" @echo "FROM files.inventory WHERE hash != '' GROUP BY hash HAVING cnt > 1 ORDER BY cnt DESC"