Documentation
¶
Index ¶
- Constants
- Variables
- func FormatFilePath(filePath string) string
- type BoltDb
- func (b *BoltDb) Add(item *BoltItem) (bool, error)
- func (b *BoltDb) AddItems(items []*BoltItem) (bool, error)
- func (b *BoltDb) Close() (bool, error)
- func (b *BoltDb) Delete(filePath string) (bool, error)
- func (b *BoltDb) Get(filePath string) (string, error)
- func (b *BoltDb) GetFileList(filePath string) ([]string, error)
- func (b *BoltDb) Open() (bool, error)
- func (b *BoltDb) Update(filePath string, data string) (bool, error)
- type BoltItem
- type FileAction
- type FileActionTask
- type FileActionTaskList
- type FileActionTaskManager
- func (f *FileActionTaskManager) AddLocalFolderModifyCount()
- func (f *FileActionTaskManager) AddPanFolderModifyCount()
- func (f *FileActionTaskManager) AddSyncActionModifyCount()
- func (f *FileActionTaskManager) MinusLocalFolderModifyCount()
- func (f *FileActionTaskManager) MinusPanFolderModifyCount()
- func (f *FileActionTaskManager) MinusSyncActionModifyCount()
- func (f *FileActionTaskManager) Start() error
- func (f *FileActionTaskManager) Stop() error
- type LocalFileItem
- func (item *LocalFileItem) FormatFileName() string
- func (item *LocalFileItem) FormatFilePath() string
- func (item *LocalFileItem) HashCode() string
- func (item *LocalFileItem) Id() string
- func (item *LocalFileItem) IsFolder() bool
- func (item *LocalFileItem) ScanTime() time.Time
- func (item *LocalFileItem) ScanTimeUnix() int64
- func (item *LocalFileItem) UpdateTime() time.Time
- func (item *LocalFileItem) UpdateTimeUnix() int64
- type LocalFileList
- type LocalSyncDb
- type LocalSyncDbBolt
- func (p *LocalSyncDbBolt) Add(item *LocalFileItem) (bool, error)
- func (p *LocalSyncDbBolt) AddFileList(items LocalFileList) (bool, error)
- func (p *LocalSyncDbBolt) Close() (bool, error)
- func (p *LocalSyncDbBolt) Delete(filePath string) (bool, error)
- func (p *LocalSyncDbBolt) Get(filePath string) (*LocalFileItem, error)
- func (p *LocalSyncDbBolt) GetFileList(filePath string) (LocalFileList, error)
- func (p *LocalSyncDbBolt) Open() (bool, error)
- func (p *LocalSyncDbBolt) Update(item *LocalFileItem) (bool, error)
- type PanFileItem
- func (item *PanFileItem) FormatFileName() string
- func (item *PanFileItem) FormatFilePath() string
- func (item *PanFileItem) HashCode() string
- func (item *PanFileItem) Id() string
- func (item *PanFileItem) IsFolder() bool
- func (item *PanFileItem) ScanTime() time.Time
- func (item *PanFileItem) ScanTimeUnix() int64
- func (item *PanFileItem) UpdateTime() time.Time
- func (item *PanFileItem) UpdateTimeUnix() int64
- type PanFileList
- type PanSyncDb
- type PanSyncDbBolt
- func (p *PanSyncDbBolt) Add(item *PanFileItem) (bool, error)
- func (p *PanSyncDbBolt) AddFileList(items PanFileList) (bool, error)
- func (p *PanSyncDbBolt) Close() (bool, error)
- func (p *PanSyncDbBolt) Delete(filePath string) (bool, error)
- func (p *PanSyncDbBolt) Get(filePath string) (*PanFileItem, error)
- func (p *PanSyncDbBolt) GetFileList(filePath string) (PanFileList, error)
- func (p *PanSyncDbBolt) Open() (bool, error)
- func (p *PanSyncDbBolt) Update(item *PanFileItem) (bool, error)
- type ScanStatus
- type SyncDriveConfig
- type SyncFileAction
- type SyncFileDb
- type SyncFileDbBolt
- func (s *SyncFileDbBolt) Add(item *SyncFileItem) (bool, error)
- func (s *SyncFileDbBolt) Close() (bool, error)
- func (s *SyncFileDbBolt) Delete(id string) (bool, error)
- func (s *SyncFileDbBolt) Get(id string) (*SyncFileItem, error)
- func (s *SyncFileDbBolt) GetFileList(Status SyncFileStatus) (SyncFileList, error)
- func (s *SyncFileDbBolt) Open() (bool, error)
- func (s *SyncFileDbBolt) Update(item *SyncFileItem) (bool, error)
- type SyncFileItem
- type SyncFileList
- type SyncFileStatus
- type SyncMode
- type SyncOption
- type SyncPriorityOption
- type SyncTask
- type SyncTaskManager
Constants ¶
View Source
const ( // DownloadingFileSuffix 下载中文件后缀 DownloadingFileSuffix string = ".aliyunpan" // TimeSecondsOf30Seconds 30秒 TimeSecondsOf30Seconds int64 = 30 // TimeSecondsOfOneMinute 一分钟秒数 TimeSecondsOfOneMinute int64 = 60 // TimeSecondsOf2Minute 2分钟秒数 TimeSecondsOf2Minute int64 = 2 * TimeSecondsOfOneMinute // TimeSecondsOf5Minute 5分钟秒数 TimeSecondsOf5Minute int64 = 5 * TimeSecondsOfOneMinute // TimeSecondsOf10Minute 10分钟秒数 TimeSecondsOf10Minute int64 = 10 * TimeSecondsOfOneMinute // TimeSecondsOf30Minute 30分钟秒数 TimeSecondsOf30Minute int64 = 30 * TimeSecondsOfOneMinute // TimeSecondsOf60Minute 60分钟秒数 TimeSecondsOf60Minute int64 = 60 * TimeSecondsOfOneMinute )
View Source
const ( SyncFileStatusCreate SyncFileStatus = "create" SyncFileStatusUploading SyncFileStatus = "uploading" SyncFileStatusDownloading SyncFileStatus = "downloading" SyncFileStatusFailed SyncFileStatus = "failed" SyncFileStatusSuccess SyncFileStatus = "success" SyncFileStatusIllegal SyncFileStatus = "illegal" SyncFileStatusNotExisted SyncFileStatus = "notExisted" SyncFileActionDownload SyncFileAction = "download" SyncFileActionUpload SyncFileAction = "upload" SyncFileActionDeleteLocal SyncFileAction = "delete_local" SyncFileActionDeletePan SyncFileAction = "delete_pan" SyncFileActionCreateLocalFolder SyncFileAction = "create_local_folder" SyncFileActionCreatePanFolder SyncFileAction = "create_pan_folder" // ScanStatusNormal 正常 ScanStatusNormal ScanStatus = "normal" // ScanStatusDiscard 已过期,已删除 ScanStatusDiscard ScanStatus = "discard" // SyncPriorityTimestampFirst 最新时间优先 SyncPriorityTimestampFirst = "time" // SyncPriorityLocalFirst 本地文件优先 SyncPriorityLocalFirst = "local" // SyncPriorityPanFirst 网盘文件优先 SyncPriorityPanFirst = "pan" )
View Source
const (
DirBucketPrefix string = "##:@@"
)
Variables ¶
View Source
var (
ErrItemNotExisted error = fmt.Errorf("item is not existed")
)
View Source
var (
ErrSyncTaskListEmpty error = fmt.Errorf("no sync task")
)
View Source
var (
LogPrompt = false
)
Functions ¶
Types ¶
type BoltDb ¶
type BoltDb struct {
Path string
// contains filtered or unexported fields
}
BoltDb 存储本地文件信息的数据库
type FileAction ¶
type FileAction string
type FileActionTask ¶
type FileActionTask struct {
// contains filtered or unexported fields
}
func (*FileActionTask) HashCode ¶
func (f *FileActionTask) HashCode() string
type FileActionTaskList ¶
type FileActionTaskList []*FileActionTask
type FileActionTaskManager ¶
type FileActionTaskManager struct {
// contains filtered or unexported fields
}
func NewFileActionTaskManager ¶
func NewFileActionTaskManager(task *SyncTask) *FileActionTaskManager
func (*FileActionTaskManager) AddLocalFolderModifyCount ¶ added in v0.1.7
func (f *FileActionTaskManager) AddLocalFolderModifyCount()
func (*FileActionTaskManager) AddPanFolderModifyCount ¶ added in v0.1.7
func (f *FileActionTaskManager) AddPanFolderModifyCount()
func (*FileActionTaskManager) AddSyncActionModifyCount ¶ added in v0.1.7
func (f *FileActionTaskManager) AddSyncActionModifyCount()
func (*FileActionTaskManager) MinusLocalFolderModifyCount ¶ added in v0.1.7
func (f *FileActionTaskManager) MinusLocalFolderModifyCount()
func (*FileActionTaskManager) MinusPanFolderModifyCount ¶ added in v0.1.7
func (f *FileActionTaskManager) MinusPanFolderModifyCount()
func (*FileActionTaskManager) MinusSyncActionModifyCount ¶ added in v0.1.7
func (f *FileActionTaskManager) MinusSyncActionModifyCount()
func (*FileActionTaskManager) Start ¶
func (f *FileActionTaskManager) Start() error
Start 启动文件动作任务管理进程 通过对本地数据库的对比,决策对文件进行下载、上传、删除等动作
func (*FileActionTaskManager) Stop ¶
func (f *FileActionTaskManager) Stop() error
type LocalFileItem ¶
type LocalFileItem struct {
// FileName 文件名
FileName string `json:"fileName"`
// FileSize 文件大小
FileSize int64 `json:"fileSize"`
// 文件类别 folder / file
FileType string `json:"fileType"`
// 创建时间
CreatedAt string `json:"createdAt"`
// 最后修改时间
UpdatedAt string `json:"updatedAt"`
// 后缀名,例如:dmg
FileExtension string `json:"fileExtension"`
// 内容Hash值,只有文件才会有
Sha1Hash string `json:"sha1Hash"`
// FilePath 文件的完整路径
Path string `json:"path"`
// ScanTimeAt 扫描时间
ScanTimeAt string `json:"scanTimeAt"`
// ScanStatus 扫描状态
ScanStatus ScanStatus `json:"scanStatus"`
}
LocalFileItem 本地文件信息
func (*LocalFileItem) FormatFileName ¶
func (item *LocalFileItem) FormatFileName() string
func (*LocalFileItem) FormatFilePath ¶
func (item *LocalFileItem) FormatFilePath() string
func (*LocalFileItem) HashCode ¶
func (item *LocalFileItem) HashCode() string
func (*LocalFileItem) Id ¶
func (item *LocalFileItem) Id() string
func (*LocalFileItem) IsFolder ¶
func (item *LocalFileItem) IsFolder() bool
func (*LocalFileItem) ScanTime ¶
func (item *LocalFileItem) ScanTime() time.Time
func (*LocalFileItem) ScanTimeUnix ¶
func (item *LocalFileItem) ScanTimeUnix() int64
func (*LocalFileItem) UpdateTime ¶
func (item *LocalFileItem) UpdateTime() time.Time
func (*LocalFileItem) UpdateTimeUnix ¶
func (item *LocalFileItem) UpdateTimeUnix() int64
type LocalFileList ¶
type LocalFileList []*LocalFileItem
func (LocalFileList) FindFileByPath ¶
func (l LocalFileList) FindFileByPath(filePath string) *LocalFileItem
type LocalSyncDb ¶
type LocalSyncDb interface {
// Open 打开并准备数据库
Open() (bool, error)
// Add 存储一个数据项
Add(item *LocalFileItem) (bool, error)
// AddFileList 存储批量数据项
AddFileList(items LocalFileList) (bool, error)
// Get 获取一个数据项
Get(filePath string) (*LocalFileItem, error)
// GetFileList 获取文件夹下的所有的文件列表
GetFileList(filePath string) (LocalFileList, error)
// Delete 删除一个数据项,如果是文件夹,则会删除文件夹下面所有的文件列表
Delete(filePath string) (bool, error)
// Update 更新一个数据项数据
Update(item *LocalFileItem) (bool, error)
// Close 关闭数据库
Close() (bool, error)
}
func NewLocalSyncDb ¶
func NewLocalSyncDb(dbFilePath string) LocalSyncDb
type LocalSyncDbBolt ¶
type LocalSyncDbBolt struct {
Path string
// contains filtered or unexported fields
}
LocalSyncDbBolt 存储本地文件信息的数据库
func (*LocalSyncDbBolt) Add ¶
func (p *LocalSyncDbBolt) Add(item *LocalFileItem) (bool, error)
Add 增加一个数据项
func (*LocalSyncDbBolt) AddFileList ¶
func (p *LocalSyncDbBolt) AddFileList(items LocalFileList) (bool, error)
AddFileList 增加批量数据项
func (*LocalSyncDbBolt) Delete ¶
func (p *LocalSyncDbBolt) Delete(filePath string) (bool, error)
Delete 删除一个数据项
func (*LocalSyncDbBolt) Get ¶
func (p *LocalSyncDbBolt) Get(filePath string) (*LocalFileItem, error)
Get 获取一个数据项,数据项不存在返回错误
func (*LocalSyncDbBolt) GetFileList ¶
func (p *LocalSyncDbBolt) GetFileList(filePath string) (LocalFileList, error)
func (*LocalSyncDbBolt) Open ¶
func (p *LocalSyncDbBolt) Open() (bool, error)
func (*LocalSyncDbBolt) Update ¶
func (p *LocalSyncDbBolt) Update(item *LocalFileItem) (bool, error)
Update 更新数据项,数据项不存在返回错误
type PanFileItem ¶
type PanFileItem struct {
// 网盘ID
DriveId string `json:"driveId"`
// 域ID
DomainId string `json:"domainId"`
// FileId 文件ID
FileId string `json:"fileId"`
// FileName 文件名
FileName string `json:"fileName"`
// FileSize 文件大小
FileSize int64 `json:"fileSize"`
// 文件类别 folder / file
FileType string `json:"fileType"`
// 创建时间
CreatedAt string `json:"createdAt"`
// 最后修改时间
UpdatedAt string `json:"updatedAt"`
// 后缀名,例如:dmg
FileExtension string `json:"fileExtension"`
// 文件上传ID
UploadId string `json:"uploadId"`
// 父文件夹ID
ParentFileId string `json:"parentFileId"`
// 内容CRC64校验值,只有文件才会有
Crc64Hash string `json:"crc64Hash"`
// 内容Hash值,只有文件才会有
Sha1Hash string `json:"sha1Hash"`
// FilePath 文件的完整路径
Path string `json:"path"`
// Category 文件分类,例如:image/video/doc/others
Category string `json:"category"`
// ScanTimeAt 扫描时间
ScanTimeAt string `json:"scanTimeAt"`
// ScanStatus 扫描状态
ScanStatus ScanStatus `json:"scanStatus"`
}
PanFileItem 网盘文件信息
func NewPanFileItem ¶
func NewPanFileItem(fe *aliyunpan.FileEntity) *PanFileItem
func (*PanFileItem) FormatFileName ¶
func (item *PanFileItem) FormatFileName() string
func (*PanFileItem) FormatFilePath ¶
func (item *PanFileItem) FormatFilePath() string
func (*PanFileItem) HashCode ¶
func (item *PanFileItem) HashCode() string
func (*PanFileItem) Id ¶
func (item *PanFileItem) Id() string
func (*PanFileItem) IsFolder ¶
func (item *PanFileItem) IsFolder() bool
func (*PanFileItem) ScanTime ¶
func (item *PanFileItem) ScanTime() time.Time
func (*PanFileItem) ScanTimeUnix ¶
func (item *PanFileItem) ScanTimeUnix() int64
func (*PanFileItem) UpdateTime ¶
func (item *PanFileItem) UpdateTime() time.Time
func (*PanFileItem) UpdateTimeUnix ¶
func (item *PanFileItem) UpdateTimeUnix() int64
type PanFileList ¶
type PanFileList []*PanFileItem
func (PanFileList) FindFileByPath ¶
func (p PanFileList) FindFileByPath(filePath string) *PanFileItem
type PanSyncDb ¶
type PanSyncDb interface {
// Open 打开并准备数据库
Open() (bool, error)
// Add 存储一个数据项
Add(item *PanFileItem) (bool, error)
// AddFileList 存储批量数据项
AddFileList(items PanFileList) (bool, error)
// Get 获取一个数据项
Get(filePath string) (*PanFileItem, error)
// GetFileList 获取文件夹下的所有的文件列表
GetFileList(filePath string) (PanFileList, error)
// Delete 删除一个数据项,如果是文件夹,则会删除文件夹下面所有的文件列表
Delete(filePath string) (bool, error)
// Update 更新一个数据项数据
Update(item *PanFileItem) (bool, error)
// Close 关闭数据库
Close() (bool, error)
}
func NewPanSyncDb ¶
type PanSyncDbBolt ¶
type PanSyncDbBolt struct {
Path string
// contains filtered or unexported fields
}
PanSyncDbBolt 存储网盘文件信息的数据库
func (*PanSyncDbBolt) Add ¶
func (p *PanSyncDbBolt) Add(item *PanFileItem) (bool, error)
Add 增加一个数据项
func (*PanSyncDbBolt) AddFileList ¶
func (p *PanSyncDbBolt) AddFileList(items PanFileList) (bool, error)
AddFileList 增加批量数据项
func (*PanSyncDbBolt) Delete ¶
func (p *PanSyncDbBolt) Delete(filePath string) (bool, error)
Delete 删除一个数据项
func (*PanSyncDbBolt) Get ¶
func (p *PanSyncDbBolt) Get(filePath string) (*PanFileItem, error)
Get 获取一个数据项,数据项不存在返回错误
func (*PanSyncDbBolt) GetFileList ¶
func (p *PanSyncDbBolt) GetFileList(filePath string) (PanFileList, error)
func (*PanSyncDbBolt) Open ¶
func (p *PanSyncDbBolt) Open() (bool, error)
func (*PanSyncDbBolt) Update ¶
func (p *PanSyncDbBolt) Update(item *PanFileItem) (bool, error)
Update 更新数据项,数据项不存在返回错误
type SyncDriveConfig ¶
type SyncDriveConfig struct {
ConfigVer string `json:"configVer"`
SyncTaskList []*SyncTask `json:"syncTaskList"`
}
SyncDriveConfig 同步盘配置文件
type SyncFileAction ¶
type SyncFileAction string
type SyncFileDb ¶
type SyncFileDb interface {
// Open 打开并准备数据库
Open() (bool, error)
// Add 存储一个数据项
Add(item *SyncFileItem) (bool, error)
// Get 获取一个数据项
Get(id string) (*SyncFileItem, error)
// GetFileList 获取文件夹下的所有的文件列表
GetFileList(Status SyncFileStatus) (SyncFileList, error)
// Delete 删除一个数据项,如果是文件夹,则会删除文件夹下面所有的文件列表
Delete(id string) (bool, error)
// Update 更新一个数据项数据
Update(item *SyncFileItem) (bool, error)
// Close 关闭数据库
Close() (bool, error)
}
func NewSyncFileDb ¶
func NewSyncFileDb(dbFilePath string) SyncFileDb
type SyncFileDbBolt ¶
type SyncFileDbBolt struct {
Path string
// contains filtered or unexported fields
}
SyncFileDbBolt 存储同步文件状态信息的数据库
func (*SyncFileDbBolt) Add ¶
func (s *SyncFileDbBolt) Add(item *SyncFileItem) (bool, error)
Add 存储一个数据项
func (*SyncFileDbBolt) Delete ¶
func (s *SyncFileDbBolt) Delete(id string) (bool, error)
Delete 删除一个数据项,如果是文件夹,则会删除文件夹下面所有的文件列表
func (*SyncFileDbBolt) Get ¶
func (s *SyncFileDbBolt) Get(id string) (*SyncFileItem, error)
Get 获取一个数据项
func (*SyncFileDbBolt) GetFileList ¶
func (s *SyncFileDbBolt) GetFileList(Status SyncFileStatus) (SyncFileList, error)
GetFileList 获取文件夹下的所有的文件列表
func (*SyncFileDbBolt) Update ¶
func (s *SyncFileDbBolt) Update(item *SyncFileItem) (bool, error)
Update 更新一个数据项数据
type SyncFileItem ¶
type SyncFileItem struct {
Action SyncFileAction `json:"action"`
Status SyncFileStatus `json:"status"`
LocalFile *LocalFileItem `json:"localFile"`
PanFile *PanFileItem `json:"panFile"`
// LocalFolderPath 本地目录
LocalFolderPath string `json:"localFolderPath"`
// PanFolderPath 云盘目录
PanFolderPath string `json:"panFolderPath"`
StatusUpdateTime string `json:"statusUpdateTime"`
DriveId string `json:"driveId"`
UseInternalUrl bool `json:"useInternalUrl"`
DownloadRange *transfer.Range `json:"downloadRange"`
DownloadBlockSize int64 `json:"downloadBlockSize"`
UploadRange *transfer.Range `json:"uploadRange"`
UploadEntity *aliyunpan.CreateFileUploadResult `json:"uploadEntity"`
// UploadPartSeq 上传序号,从0开始
UploadPartSeq int `json:"uploadPartSeq"`
UploadBlockSize int64 `json:"uploadBlockSize"`
}
func (*SyncFileItem) HashCode ¶
func (item *SyncFileItem) HashCode() string
func (*SyncFileItem) Id ¶
func (item *SyncFileItem) Id() string
func (*SyncFileItem) StatusUpdateTimeUnix ¶
func (item *SyncFileItem) StatusUpdateTimeUnix() int64
func (*SyncFileItem) String ¶
func (item *SyncFileItem) String() string
type SyncFileList ¶
type SyncFileList []*SyncFileItem
type SyncFileStatus ¶
type SyncFileStatus string
type SyncOption ¶ added in v0.1.9
type SyncOption struct {
FileDownloadParallel int // 文件下载并发数
FileUploadParallel int // 文件上传并发数
FileDownloadBlockSize int64 // 文件下载分片大小
FileUploadBlockSize int64 // 文件上传分片大小
UseInternalUrl bool // 是否使用阿里ECS内部链接
MaxDownloadRate int64 // 限制最大下载速度
MaxUploadRate int64 // 限制最大上传速度
// 优先级选项
SyncPriority SyncPriorityOption
}
SyncOption 同步选项
type SyncTask ¶
type SyncTask struct {
// Name 任务名称
Name string `json:"name"`
// Id 任务ID
Id string `json:"id"`
// DriveId 网盘ID,目前支持文件网盘
DriveId string `json:"-"`
// LocalFolderPath 本地目录
LocalFolderPath string `json:"localFolderPath"`
// PanFolderPath 云盘目录
PanFolderPath string `json:"panFolderPath"`
// Mode 同步模式
Mode SyncMode `json:"mode"`
// Priority 优先级选项
Priority SyncPriorityOption `json:"priority"`
// LastSyncTime 上一次同步时间
LastSyncTime string `json:"lastSyncTime"`
// contains filtered or unexported fields
}
SyncTask 同步任务
type SyncTaskManager ¶
type SyncTaskManager struct {
PanUser *config.PanUser
DriveId string
PanClient *aliyunpan.PanClient
SyncConfigFolderPath string
// contains filtered or unexported fields
}
SyncTaskManager 同步任务管理器
func NewSyncTaskManager ¶
func NewSyncTaskManager(user *config.PanUser, driveId string, panClient *aliyunpan.PanClient, syncConfigFolderPath string, option SyncOption) *SyncTaskManager
func (*SyncTaskManager) ConfigFilePath ¶
func (m *SyncTaskManager) ConfigFilePath() string
Click to show internal directories.
Click to hide internal directories.