MCPcopy
hub / github.com/Dokploy/dokploy / runVolumeBackup

Function runVolumeBackup

packages/server/src/utils/volume-backups/utils.ts:105–191  ·  view source on GitHub ↗
(volumeBackupId: string)

Source from the content-addressed store, hash-verified

103};
104
105export const runVolumeBackup = async (volumeBackupId: string) => {
106 const volumeBackup = await findVolumeBackupById(volumeBackupId);
107 const serverId =
108 volumeBackup.application?.serverId || volumeBackup.compose?.serverId;
109 const deployment = await createDeploymentVolumeBackup({
110 volumeBackupId: volumeBackup.volumeBackupId,
111 title: "Volume Backup",
112 description: "Volume Backup",
113 });
114 const projectName = getProjectName(volumeBackup);
115 const organizationId = getOrganizationId(volumeBackup);
116 try {
117 const command = await backupVolume(volumeBackup);
118
119 const commandWithLog = `(${command}) >> ${deployment.logPath} 2>&1`;
120 if (serverId) {
121 await execAsyncRemote(serverId, commandWithLog);
122 } else {
123 await execAsync(commandWithLog);
124 }
125
126 if (volumeBackup.keepLatestCount && volumeBackup.keepLatestCount > 0) {
127 await cleanupOldVolumeBackups(volumeBackup, serverId);
128 }
129
130 await updateDeploymentStatus(deployment.deploymentId, "done");
131
132 // Map service type to match notification function expectations
133 const mappedServiceType =
134 volumeBackup.serviceType === "mongo"
135 ? "mongodb"
136 : volumeBackup.serviceType;
137
138 try {
139 await sendVolumeBackupNotifications({
140 projectName,
141 applicationName: volumeBackup.name,
142 volumeName: volumeBackup.volumeName,
143 serviceType: mappedServiceType,
144 type: "success",
145 organizationId,
146 });
147 } catch (notificationError) {
148 console.error(
149 "Failed to send volume backup success notification",
150 notificationError,
151 );
152 }
153 } catch (error) {
154 const { VOLUME_BACKUPS_PATH } = paths(!!serverId);
155 const volumeBackupPath = path.join(
156 VOLUME_BACKUPS_PATH,
157 volumeBackup.appName,
158 );
159 // delete all the .tar files
160 const command = `rm -rf ${volumeBackupPath}/*.tar`;
161 if (serverId) {
162 await execAsyncRemote(serverId, command);

Callers 3

volume-backups.tsFile · 0.90
runJobsFunction · 0.90
scheduleVolumeBackupFunction · 0.85

Calls 11

findVolumeBackupByIdFunction · 0.90
backupVolumeFunction · 0.90
execAsyncRemoteFunction · 0.90
execAsyncFunction · 0.90
updateDeploymentStatusFunction · 0.90
pathsFunction · 0.90
getProjectNameFunction · 0.85
getOrganizationIdFunction · 0.85
cleanupOldVolumeBackupsFunction · 0.85

Tested by

no test coverage detected