mirror of https://github.com/portainer/portainer
fix(filesystem): keep original file copy with SafeCopyDirectory
parent
95424c322d
commit
748c6fa22a
|
@ -899,18 +899,22 @@ func FileExists(filePath string) (bool, error) {
|
|||
}
|
||||
|
||||
// SafeCopyDirectory copies a directory from src to dst in a safe way.
|
||||
func (service *Service) SafeMoveDirectory(originalPath, newPath string) error {
|
||||
func (service *Service) SafeCopyDirectory(originalPath, newPath string) error {
|
||||
// 1. Backup the source directory to a different folder
|
||||
backupDir := fmt.Sprintf("%s-%s", filepath.Dir(originalPath), "backup")
|
||||
err := MoveDirectory(originalPath, backupDir)
|
||||
err := CopyDir(originalPath, backupDir, false)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to backup source directory: %w", err)
|
||||
}
|
||||
|
||||
defer func() {
|
||||
if err != nil {
|
||||
restoreErr := os.RemoveAll(originalPath)
|
||||
if err != nil {
|
||||
log.Warn().Err(restoreErr).Msg("failed to cleanup original directory")
|
||||
}
|
||||
// If an error occurred, rollback the backup directory
|
||||
restoreErr := restoreBackup(originalPath, backupDir)
|
||||
restoreErr = restoreBackup(originalPath, backupDir)
|
||||
if restoreErr != nil {
|
||||
log.Warn().Err(restoreErr).Msg("failed to restore backup during creating versioning folder")
|
||||
}
|
||||
|
|
|
@ -1412,7 +1412,7 @@ type (
|
|||
GetEdgeStackProjectPathByVersion(edgeStackIdentifier string, version int, commitHash string) string
|
||||
StoreEdgeStackFileFromBytesByVersion(edgeStackIdentifier, fileName string, version int, data []byte) (string, error)
|
||||
FormProjectPathByVersion(projectPath string, version int, commitHash string) string
|
||||
SafeMoveDirectory(src, dst string) error
|
||||
SafeCopyDirectory(src, dst string) error
|
||||
StoreRegistryManagementFileFromBytes(folder, fileName string, data []byte) (string, error)
|
||||
KeyPairFilesExist() (bool, error)
|
||||
StoreKeyPair(private, public []byte, privatePEMHeader, publicPEMHeader string) error
|
||||
|
|
Loading…
Reference in New Issue