This commit is contained in:
孙诚
2025-02-27 16:58:21 +08:00
commit 80ab8d76eb
40 changed files with 2482 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
using System.Diagnostics;
using System.Net.Http.Json;
using Core;
using FluentScheduler;
using Interface.Jobs;
using Microsoft.Extensions.Configuration;
namespace Service.Jobs;
public class RSyncTaskRegistry : Registry, IRSyncTaskRegistry
{
private readonly IConfiguration _configuration;
public RSyncTaskRegistry(IConfiguration configuration)
{
_configuration = configuration;
Schedule(Job).ToRunEvery(1).Days().At(10, 0);
}
public async void Job()
{
try
{
// await JobExecute();
}
catch (Exception e)
{
Console.WriteLine(e);
await WxNotify.SendCommonAsync($"RSyncTaskRegistry.Job() error: {e}");
}
}
private async Task JobExecute()
{
var config = _configuration.GetSection("SyncTask");
foreach (var item in config.GetSection("SyncPaths").GetChildren())
{
var source = Path.Combine(config["SourceRoot"]!, item["Source"]!);
var isDeleteAfter = item["DeleteAfter"] == "true";
await ExecuteItem(source, config["TargetRoot"]!, item["Target"]!, isDeleteAfter);
}
}
private async Task ExecuteItem(string source, string remote, string destination, bool isDeleteAfter)
{
var logName = $"rclone_output_{destination.Replace("/", "_")}{DateTime.Now:yyMMddHHmm}.log";
var commands = new[]
{
$"rclone sync " +
$"{source} " +
$"{remote}:{destination} " +
$"--fast-list " +
$"--size-only " +
$"{(isDeleteAfter ? "--delete-after" : "--delete-excluded")} " +
$"> /wd/logs/{logName} 2>&1"
};
await WxNotify.SendCommonAsync($@"RSyncTaskRegistry.ExecuteItem()
`{commands[0]}`
> {DateTime.Now:yyyy-MM-dd HH:mm:ss}
");
_ = Command.ExecAsync(commands);
}
}