Create the temporary backup file hidden in the final location.
Fixes #10003
This commit is contained in:
parent
e89285a219
commit
aff57fb54e
1 changed files with 23 additions and 3 deletions
|
@ -27,11 +27,14 @@ import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
public class LocalBackupJob extends BaseJob {
|
public final class LocalBackupJob extends BaseJob {
|
||||||
|
|
||||||
public static final String KEY = "LocalBackupJob";
|
public static final String KEY = "LocalBackupJob";
|
||||||
|
|
||||||
private static final String TAG = LocalBackupJob.class.getSimpleName();
|
private static final String TAG = Log.tag(LocalBackupJob.class);
|
||||||
|
|
||||||
|
public static final String TEMP_BACKUP_FILE_PREFIX = ".backup";
|
||||||
|
public static final String TEMP_BACKUP_FILE_SUFFIX = ".tmp";
|
||||||
|
|
||||||
public LocalBackupJob() {
|
public LocalBackupJob() {
|
||||||
this(new Job.Parameters.Builder()
|
this(new Job.Parameters.Builder()
|
||||||
|
@ -76,6 +79,8 @@ public class LocalBackupJob extends BaseJob {
|
||||||
String fileName = String.format("signal-%s.backup", timestamp);
|
String fileName = String.format("signal-%s.backup", timestamp);
|
||||||
File backupFile = new File(backupDirectory, fileName);
|
File backupFile = new File(backupDirectory, fileName);
|
||||||
|
|
||||||
|
deleteOldTemporaryBackups(backupDirectory);
|
||||||
|
|
||||||
if (backupFile.exists()) {
|
if (backupFile.exists()) {
|
||||||
throw new IOException("Backup file already exists?");
|
throw new IOException("Backup file already exists?");
|
||||||
}
|
}
|
||||||
|
@ -84,7 +89,7 @@ public class LocalBackupJob extends BaseJob {
|
||||||
throw new IOException("Backup password is null");
|
throw new IOException("Backup password is null");
|
||||||
}
|
}
|
||||||
|
|
||||||
File tempFile = File.createTempFile("backup", "tmp", StorageUtil.getBackupCacheDirectory(context));
|
File tempFile = File.createTempFile(TEMP_BACKUP_FILE_PREFIX, TEMP_BACKUP_FILE_SUFFIX, backupDirectory);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
FullBackupExporter.export(context,
|
FullBackupExporter.export(context,
|
||||||
|
@ -111,6 +116,21 @@ public class LocalBackupJob extends BaseJob {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void deleteOldTemporaryBackups(@NonNull File backupDirectory) {
|
||||||
|
for (File file : backupDirectory.listFiles()) {
|
||||||
|
if (file.isFile()) {
|
||||||
|
String name = file.getName();
|
||||||
|
if (name.startsWith(TEMP_BACKUP_FILE_PREFIX) && name.endsWith(TEMP_BACKUP_FILE_SUFFIX)) {
|
||||||
|
if (file.delete()) {
|
||||||
|
Log.w(TAG, "Deleted old temporary backup file");
|
||||||
|
} else {
|
||||||
|
Log.w(TAG, "Could not delete old temporary backup file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onShouldRetry(@NonNull Exception e) {
|
public boolean onShouldRetry(@NonNull Exception e) {
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue